コマンドTips

AWKチートシート

オプション

-f file
AWKスクリプトファイルを指定

組込関数

sub(p,r)
sub(p,r,$0)と同じ
sub(p,r,s)
文字列sでパターンpに左最長一致する文字列をrで置換。置換回数(0か1)を返す
gsub(p,r)
gsub(p,r,s)と同じ
gsub(p,r,s)
sub(p,r,s)を繰り返し実施し一致するすべてを置換。置換回数を返す
length(s)
文字列の長さを返す ※1
substr(s,i)
文字列sのi番目から最後までの文字列を返す
substr(s,i,l)
文字列sのi番目からl文字分までの文字列を返す
print
print($0)と同じ
print 式1,式2,...
print(式1,式2,...)と同じ
print(式1,式2,...)
式1OFS式2OFS...ORSを出力
printf(書式,式1,式2,...)
出力書式を指定したprint()
sprintf(書式,式1,式2,...)
printf()の処理を出力ではなく返値として返す

※1 one true awk (書籍"The AWK Programming Language", by Al Aho, Brian Kernighan, and Peter Weinbergerで解説されているオリジナルのawk)ではバイト数、GNU awkでは文字数が返ってくる。

ファイルとコマンド

print(式1,式2,...)>"file"
ファイルへ出力
print(式1,式2,...)>>"file"
ファイルへ追記
print(式1,式2,...)|"cmd"
コマンドへパイプ
system("cmd")
コマンドを実行。返値を返す
"cmd"|getline
"cmd"|getline $0に同じ
"cmd"|getline v
"cmd"の実行結果を変数vへ保持

乱数

rand()
0〜1の浮動小数点乱数
int(rand()*N)
0からN-1までの整乱数

組込変数

NF
現在の行の列の数
NR
現在の行の行番号
FS
入力データの列の区切り文字(デフォルト値は空白)
RS
入力データの行の区切り文字(デフォルト値は\n)
OFS
出力データの列の区切り文字(デフォルト値は空白)
ORS
出力データの行の区切り文字(デフォルト値は\n)
ARGC
引数の数
ARGV
引数の配列
FILENAME
現在開いている入力ファイル名
FNR
現在開いているファイルの現在の行番号
OFMT
数値の出力書式
RLENGTH
match()で一致した文字列の長さ
RSTART
match()で一致した文字列の開始位置

正規表現

.
任意の1文字
N?
0個または1個のNに一致
N*
0個以上のNに一致
N+
1個以上のNに一致
^
文字列の最初に一致
$
文字列の最後に一致
[文字列]
文字列中の任意の1文字に一致
[^文字列]
文字列中の文字以外の任意の1文字に一致
\.
.一致
\?
?に一致
\*
*に一致
\+
+に一致
\$
$に一致
\\
\に一致

パターン

すべての行に一致
式が真。&&、||、!で複合化可能
/正規表現/
正規表現に一致
パターン1,パターン2
パターン1に一致する行からパターン2に一致する行までに一致
BEGIN
データ入力前
END
全データ処理後

制御構文

式 ? 文 : 文
分岐構文
if (式) 文
分岐構文
if (式) 文 else 文
分岐構文
while (式) 文
繰り返し構文
do 文 while (式)
繰り返し構文
for (V in 配列) 文
繰り返し構文
for (式;式;式) 文
繰り返し構文

エスケープシーケンス

\t
タブ
\n
改行
\r
復帰
\f
フォームフィード
\b
バックスペース
\NNN
8進数

比較演算子

<
小さい
>
大きい
≶=
小さいかまたは等しい
>=
大きいかまたは等しい
==
等しい
!=
等しくない
~
正規表現に致する
!~
正規表現に一致しない
last modified: 2015-02-17 01:02:17