AWKチートシート
オプション
- -f file
- AWKスクリプトファイルを指定
- -v 変数=値
- 変数の初期値を指定
組込変数
- NF
- 現在行のフィールドの数
- NR
- 現在行の行番号
- FS
- 入力データのフィールド区切り文字(デフォルト値は空白、タブ、改行文字)
- RS
- 入力データの行区切り文字(デフォルト値は改行文字)
- OFS
- 出力データのフィールド区切り文字(デフォルト値は空白)
- ORS
- 出力データの行区切り文字(デフォルト値は改行文字)
- ARGC
- 引数の数
- ARGV
- 引数の配列
- FILENAME
- 現在開いている入力ファイル名
- FNR
- 現在開いている入力ファイルの現在行の行番号
- CONVFMT
- 数値を文字列に変換する書式
- OFMT
- 数値の出力書式
- RLENGTH
- match()で一致した文字列の長さ
- RSTART
- match()で一致した文字列の開始位置
比較演算子と論理演算子
- <
- 小さい
- >
- 大きい
- <=
- 小さいかまたは等しい
- >=
- 大きいかまたは等しい
- ==
- 等しい
- !=
- 等しくない
- ~
- 正規表現に致する
- !~
- 正規表現に一致しない
- 式 && 式2
- 論理AND
- 式 || 式2
- 論理OR
- ! 式
- 論理否定
- 式 ? 式 : 式
- 条件式
組込関数
- sub(r, t)
- sub(r, t, $0)と同じ
- sub(r, t, s)
- 文字列 s 中の正規表現 r に一致する最初の部分を t で置換。置換回数(0か1)を返す
- gsub(r, t)
- gsub(r, t, $0)と同じ
- gsub(r, t, s)
- sub(r, t, s)を繰り返し実施し、一致するすべてを置換。置換回数を返す
- length(s)
- 文字列あるいは配列の長さを返す ※1 ※2
- substr(s, i)
- 文字列sのi番目から最後までの文字列を返す
- substr(s, i, n)
- 文字列sのi番目からn文字分までの文字列を返す
- sprintf(書式, 式1, 式2, ...)
- printf()の処理を出力ではなく返値として返す
※1 文字列に適用した場合、one true awk (書籍"The AWK Programming Language", by Al Aho, Brian Kernighan, and Peter Weinbergerで解説されているオリジナルの awk)ではバイト数、GNU awkでは文字数が返ってくる。
※2 配列への適用は、POSIX で規定されていない非標準の拡張である。
制御構文
- if (式) 文
- 条件構文
- if (式) 文 else 文
- 条件構文
- while (式) 文
- 繰り返し構文
- do 文 while (式)
- 繰り返し構文
- for (変数 in 配列) 文
- 繰り返し構文
- for (式; 式; 式) 文
- 繰り返し構文
ファイルとコマンド
- print
- print($0)と同じ
- print 式1, 式2, ...
- print(式1, 式2, ...) と同じ
- print(式1, 式2, ...)
- 式1
OFS
式2 OFS
... ORS
を標準出力へ出力
- print(式1, 式2, ...) >"file"
- ファイルへ出力
- print(式1, 式2, ...) >>"file"
- ファイルへ追記
- print(式1, 式2, ...) | "cmd"
- コマンドへパイプ
- printf 書式, 式1, 式2, ...
- printf(書式, 式1, 式2, ...) と同じ
- printf(書式, 式1, 式2, ...)
- 出力書式を指定したprint()
- printf(書式, 式1, 式2, ...) >"file"
- ファイルへ出力
- printf(書式, 式1, 式2, ...) >>"file"
- ファイルへ追記
- printf(書式, 式1, 式2, ...) | "cmd"
- コマンドへパイプ
- system("cmd")
- コマンドを実行。返値を返す
- getline
- getline $0 と同じ
- getline v
- 次の入力行を変数vへ設定
- command | getline
- command | getline $0 と同じ
- command | getline v
- command の実行結果を変数vへ設定
乱数
- rand()
- 0〜1(未満) の小数乱数
- int(rand()*N)
- 0からN-1までの整数乱数
正規表現
- .
- 任意の1文字
- N?
- 0個または1個のNに一致
- N*
- 0個以上のNに一致
- N+
- 1個以上のNに一致
- ^
- 文字列の最初に一致
- $
- 文字列の最後に一致
- [文字列]
- 文字列中の任意の1文字に一致
- [^文字列]
- 文字列中の文字以外の任意の1文字に一致
- \.
- . に一致
- \?
- ? に一致
- \*
- * に一致
- \+
- + に一致
- \$
- $ に一致
- \\
- \ に一致
パターン
- (指定なし)
- すべての行に一致
- 式
- 式が真の行に一致。(式中に &&, ||, ! などを使用可)
- /正規表現/
- 正規表現に一致
- パターン1, パターン2
- パターン1に一致する行からパターン2に一致する行までに一致
- BEGIN
- データ入力前
- END
- 全データ処理後
エスケープシーケンス
- \t
- タブ
- \n
- 改行
- \r
- 復帰
- \f
- フォームフィード
- \b
- バックスペース
- \\
- バックスラッシュ
- \NNN
- 8進数