割算は1ではなく1.0の様に小数点を付けないと不正確になるので注意
awk '{print $1 $3}'						: 続けて表示
awk '{print $1, $3}'						: 出力フィールドセパレータで区切って表示
awk '{printf "%4d %s\n", $1, $3}'				: 指定フォーマットで表示
awk '(NR==2){print $2}'						: 2行目の2列目だけ表示
awk '(NR%5==0){print}'						: 5行おきに出力
awk '{print $1*3.0, $3}'					: 列ごとの計算
awk '{s+=$1}END{print "sum:", s, "average:", s/NR}'		: すべての行の足し算
awk 'BEGIN{a=0}{a=a+$1}END{print a}'				: すべての行の足し算
awk '($1>=20)&&($1<=100)'					: 1列目が20以上かつ100以下の行だけ表示
awk '{printf "%f\n", ($3*'${hoge}')*2.5}'			: シェル変数を使用する場合は''で囲む
echo "1 2" | awk '{print $1+$2}'				: パイプによる計算
awk 'BEGIN{OFS=","}{print $1, $2}'				: 区切りをカンマで出力
awk '{print substr($0, 9, 4)}'					: 9文字目から4文字取り出す
echo "abcdef" | awk '{print substr($1, 3, 2)}'			: 3文字目から2文字分を表示
awk '{print length(), $0}'					: 文字列の長さ
awk '{$1=""; print $0}'						: 最初のフィールドを除外する
awk '{$NF=""; print $0}'					: 最後のフィールドを除外する
awk '($3>0){print $1, $2*3, hoge}' hoge=${HOME}			: フィールド差し替え
awk -F, -f input.awk input.txt					: ファイル処理
awk '/exp/ {print $0}'						: exp式に適合する部分文字列があるか
awk '/^#/'							: #で始まる行を表示
awk '/^#/ {print}'						: #で始まる行を表示
awk '$2~/exp/ {print $0}'					: exp式が正規表現に適合するか
awk '$2~!/exp/ {print $0}'					: exp式が正規表現に適合しないか
awk '$2==""'							: 2フィールド目が空文字列
awk '$2 ~ /^$/'							: 2フィールド目が空文字列 (正規表現を利用)
awk '$2 !~ /./'							: 2フィールド目が空文字列 (正規表現を利用)
awk 'length($2) == 0'						: 2フィールド目が空文字列 (関数を利用)
awk 'NF % 2 !=0'						: フィールド数が奇数のみ表示
awk 'length($0) > 72'						: 1行が72文字以下のみ表示
awk '{if(/_x/){print $1, $2, $3-1}else{print}}'			: conditional if
awk '{if($2<=$3+1){print $1, $2, $3-1}else{print}}'		: conditional if
echo "" | awk '{for(i=0; i<5; i=i+1){print i}}'			: for loop
echo "" | awk '{i=1; while(i<=10){print i; i++}}'		: while loop
awk '{if(NR%3==2){sub(/$/,""); printf("%s", $0)}else{print}}'	: ある条件で連結
awk '{printf("%s ", $0)}'					: 横に連結
awk '{print "hoge" > "/dev/tty"}'				: ターミナルへの打ち出し
awk '{nc+=length($0)+1; nw+=NF}END{print NR, nw, nc}'		: wc emulator
## 3行名以降だけ表示
awk '{for(i=3; i<NF; i++){printf("%s ", $i)}; {printf("%s\n"), $NF}}'
## 1列目と2列目だけ変更して3行名以降はそのまま表示 (列の数が不明な場合に使用)
awk '{printf("%s", $0); printf("%s", $1); for(i=3; i<=NF; i++){printf("%s ", $i)}; printf("\n");}
> : GREATER < : LESS >= : GREATER or EQUAL <= : LESS or EQUAL == : EQUAL && : AND || : OR != : NOT EQUAL
ARGC : コマンド行にある引数の数 ARGV : コマンド行にある引数の配列 FILENAME : 現在の入力ファイル名 FNR : 現在のファイルの入力レコード数 FS : 入力フィールドセパレータ (Default = Space) OFS : 出力フィールドセパレータ (Default = Space) NF : 現在の入力レコードのフィールド数 NR : 現在までの入力レコード数 = 行番号 RS : 入力レコードセパレータ (Default = \n) ORS : 出力レコードセパレータ (Default = \n) OFMT : 数値の出力形式 (Default = %.6g) NF(ARGC) : フィールドの数 NR : 処理中の行の順番 $NF : 最後のフィールド $NR : 最初のフィールド $0 : 1行全部
close : getline : 次のレコードを読む ($0に現入力ファイルの次のレコードを設定する) getline < input.txt : ファイルから1レコード読む getline var : 次のレコードを読んで変数に代入 getline var < input.txt : ファイルから1レコード読んで変数に代入 system(command) : シェルコマンドを実行
break continue delete exit next
gsub(r, s, t) index(s, t) length(s) match(s, r) split(s, a, fs) substr(s, i, n) sprintf(fmt, expr) cos(x) sin(x) exp(x) log(x) sqrt(x) int(x)
%s : 文字列として出力 %c : 1文字として出力 %d : 10進法 %x : 16進法 %o : 8進法 %f : 浮動小数点 %e : 指数 %5d : 5桁分のスペースをあけて表示 %.3d : 強制的に小数点以下3桁で表示