ホームページ > php教程 > PHP开发 > よく使用される awk コマンド

よく使用される awk コマンド

高洛峰
リリース: 2016-12-15 10:44:12
オリジナル
1417 人が閲覧しました

awk の使用法: awk ' pattern {action} '

変数名の意味
ARGC コマンドライン引数の数
ARGV コマンドライン引数の配列
FILENAME 現在の入力ファイル名
現在のファイル内の FNR レコード番号
FS 入力フィールド分離文字、デフォルトはスペースです
RS 入力レコード区切り文字
NF 現在のレコードのフィールド数
NR これまでのレコード数
OFS 出力フィールド区切り文字
ORS 出力レコード区切り文字

1, awk '/101/' ファイル 一致する行を表示ファイル file に 101 が含まれています。
awk '/101/,/105/' ファイル
awk '$1 == 5' ファイル
awk '$1 == "CT"' ファイル 二重引用符が必要であることに注意してください
awk '$1 * $2 >100 ' ファイル
awk '$2 >5 && $2


2、awk '{print NR,NF,$1,$NF,}' file は、現在のレコード番号、ドメイン番号、および各行の最初の行を表示します。ファイル ファイルと最後のドメイン。
awk '/101/ {print $1,$2 + 10}' file は、ファイル file + 10 の一致する行の最初と 2 番目のフィールドを表示します。
awk '/101/ {print $1$2}' file
awk '/101/ {print $1 $2}' file ファイル file の一致する行の最初と 2 番目のフィールドが表示されますが、間に区切り文字はありませんフィールド。


3. df | awk '$4>1000000 ' 条件を満たす 4 番目のフィールドの行を表示するなど、入力を取得します。


4. awk -F "|" '{print $1}' ファイルは新しい区切り文字 "|" に従って動作します。
awk 'BEGIN { FS="[: t|]" }
{print $1,$2,$3}' file 入力区切り文字 (FS="[: t|]") を設定して、入力区切り文字を変更します。

Sep="|"
awk -F $Sep '{print $1}' ファイルは環境変数 Sep の値を区切り文字として使用します。
awk -F '[ :t|]' '{print $1}' ファイルは正規表現の値を区切り文字として使用します。ここでは、スペース、:、TAB、および | を同時に区切り文字として表します。
awk -F '[][]' '{print $1}' ファイルは正規表現の値を区切り文字として使用し、ここでは [,]


5 を表します。awk -f awkfile ファイルは、シーケンス制御内のファイル awkfile。
猫の awkfile
/101/{print "


8. awk 'BEGIN { max=100 ;print "max=" max} " BEGIN は、行を処理する前に実行される操作を表します。
{max=($1 >max ?$1:max); print $1,"Now max is "max" file ファイルの最初のフィールドの最大値を取得します。
(式 1? 式 2: 式 3 は次と同等です:
if (式 1)
式 2
else
式 3
awk '{print ($1>4 ? "high "$1: " low "$1)} ' file


9, awk '$1 * $2 >100 {print $1}' file は、ファイル内の最初のフィールドが 101 と一致する行 (レコード) を表示します。


10, awk '{$1 == 'Chi ' {$3 = 'China'; print}' ファイル 一致する行を見つけたら、行 (レコード) を表示する前に 3 番目のフィールドを置き換えます
awk '{$7 %= 3; print $7}' ファイル、残りを 7 番目のフィールドに代入して、 awk '/tom/ {wage=$2+$3; printf raise}' file 一致する行を見つけたら、変数に値を代入します


。 12, awk '/tom/ {count++;}

END {print "tom was found "count"times"}' file END は、すべての入力行が処理された後の処理を意味します



13. awk 'gsub(/$/, "");gsub(/,/,"");

END {print "合計は $" コスト>"ファイル名"}' $ and を置き換えて、結果をファイル名に出力します

1 2 3 $1,200.00
1 2 3 $2,300.00
1 2 3 $4,000.00

awk '{gsub(/$/,"");gsub(/,/, "" );
if ($4>1000&&$4 else if ($4>2000&&$4 else if ($4>3000&&$4 else c4+=$4; =[%d];c2=[%d];c3=[%d];c4=[%d]n",c1,c2,c3, c4}"' ファイル
if と else if を使用して条件文を完成させます

awk '{gsub(/$/,"");gsub(/,/,"");
if ($4>3000&<4<4000 ) }
END {printf; "c1=[%d];c2=[%d];c3=[%d];c4=[%d]n",c1,c2,c3 ,c4}"' ファイル
exit を通じて特定の条件下で終了します。ただし、END 操作は実行されます。
awk '{gsub(/$/,"");gsub(/,/,"");
if ($4>3000) next
else c4+=$4; }
END {printf "c4=[% d]n",c4}"' file
next までの特定の条件で行をスキップし、次の行の操作を実行します


14, awk '{ print FILENAME,$0 }' file1 file2 file3>fileall file1 を変更します。 , File2とFile3のファイル内容は全てFileAllに書き込まれます
ファイルと先頭のファイル名を出力します ,index($0," ") +1)>$1}' fileall 結合したファイルを3つのファイルに再分割します。


16, awk 'BEGIN {"date"|getline d; print d}' パイプライン経由で getline に送信し、変数 d に代入して出力します。それ。


17. awk 'BEGIN {system("echo "Input your name:\c""); getline d;print "nYour name is",d,"b!n"}'
getline コマンドを使用して対話的に名前を入力します、そしてそれを見せてください。
awk 'BEGIN {FS=":"; while(getline0) { if($1~"050[0-9]_") print $1}}'
Print /etc/ passwd ファイル内のユーザー名には、ユーザー名 050x_ が含まれています。

18. awk '{ i=1;while(i awk '{ for(i=1;i type file|awk -F "/" '
{ for(i=1;i { if(i==NF-1) { printf "%s",$i }
else { printf "%s/",$i } }}' ファイルのフルパスを表示します。
日付を表示するには for と if を使用します
awk 'BEGIN {
for(j=1;j<=12;j++)
{ flag=0;
printf "n%dmonthn",j; ;i<=31;i++)
)&&i>30) flag=1;
if (flag==0) {printf "%02d%02d ",j,i}
}
}
}'


19 awk でのシステム変数の呼び出しは一重引用符で行う必要があります。二重引用符の場合は、文字列

Flag=abcd

awk '{print '$Flag'}' を意味します。結果は abcd
awk '{print "$Flag "}' 結果は $Flag です

上記は chinaunix から転送され、以下は私自身の要約です:

合計:

$awk 'BEGIN{total=0}{total+=$4}END{print total}' a.txt -----a.txt ファイルの 4 番目 フィールドを合計します。

$ awk '/^(no|so)/' test-----モード no または so で始まるすべての行を出力します。

$ awk '/^[ns]/{print $1}' test-----レコードが n または s で始まる場合、このレコードを出力します。

$ awk '$1 ~/[0-9][0-9]$/(print $1}' test-----最初のフィールドが 2 つの数字で終わっている場合、このレコードを出力します。

$ awk '$1 == 100 || $2 $ awk '$1 != 10' test - ----最初のフィールドが 10 に等しくない場合は、行を出力します

$ awk '/test/{print $1 + 10}' test-----レコードに正規表現テストが含まれている場合、最初のフィールドに 10 を追加して出力します。

$ awk '{print ($1 > 5 ? "ok "$1: "error"$1)}' test-----最初のフィールドの方が大きいかどうか。 5 よりも大きい場合は、疑問符の後の式の値を出力します。それ以外の場合は、コロンの後の式の値を出力します。

$ awk '/^root/,/^mysql/' test----通常のレコードで始まるレコードを出力します。正規表現 mysql で始まる新しいレコードが見つかった場合は、正規表現 mysql で始まる次のレコード、またはファイルの最後まで出力を続けます。よく使用される awk コマンドに関連する記事については、PHP 中国語 Web サイトにご注意ください

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート