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++;}
13. awk 'gsub(/$/, "");gsub(/,/,"");
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
{ for(i=1;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 でのシステム変数の呼び出しは一重引用符で行う必要があります。二重引用符の場合は、文字列
awk '{print '$Flag'}' を意味します。結果は abcd
awk '{print "$Flag "}' 結果は $Flag です
上記は chinaunix から転送され、以下は私自身の要約です:
$ awk '/^(no|so)/' test-----モード no または so で始まるすべての行を出力します。