コマンドTips

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進数
Last modified: 2022-11-08 17:15:16