$ awk [オプション] '処理内容' データ
$ awk [オプション] -f バッチファイル データ
$ chmod +x バッチファイル $ ./バッチファイル データ
#!/usr/bin/awk -f を付けること (/usr/bin/awk は環境によって異なるので、which コマンドなどで確認すること)$ コマンド | awk [オプション]
| 表記 | 効果 | 備考 |
|---|---|---|
| -F 区切り文字 | 区切り文字(入力フィールドセパレータ)の変更 | |
| -v 変数名=変数値 | awk 内に変数を渡す | シェル内での実行の際、シェル変数を awk に渡したい時に使う |
| -f バッチファイル | バッチファイルに記述した処理をする | |
#!/usr/bin/awk
BEGIN{
開始処理
}
/正規表現パターン1/{
パターン1に対する処理
}
/正規表現パターン2/{
パターン2に対する処理
}
:
END{
終了処理
}
-F 区切り文字 で変更可 (区切り文字は正規表現での表現可)if (条件1){
処理1
else if (条件2){
処理2
}
else{
処理3
}
if (i == 0){
print "0"
}
else if (0 < i && i < 10){
print "1-9"
}
else{
print "10 over"
}
for (変数の初期化; 変数の条件式; 変数の変化){
処理
}
for (i = 0; i < 3; i ++){
print "Hello"
}
Hello を 3 回出力
print "文字列"
“ ” や “\t” を変数の間に入れるprintf("フォーマット", 値)
sub(正規表現, 置換後の文字列, 対象とする文字列)
sub(/a/, "", str)
⇒ bnana
gsub(/a/, "", str)
⇒ bnn
split(対象文字列, 配列, 区切り文字)
hoge = split("banana", data, "a")
hoge は 3、data には「b」「n」「n」が入る
length(配列)
#!/usr/bin/awk -f BEGIN{ total = 0 count = 0 } $0 !~ /^#/{ total += $2 count ++ } END{ average = total / count print "Total: " total print "Average: " average }
$ awk -f sumaverage.awk data.txt
$ chmod +x sumaverage.awk $ ./sumaverage.awk data.txt
$ awk 'BEGIN{total = 0; count = 0} $0!~/^#/{total += $2; count ++} END{average = total / count; print "Total: " total; print "Average: " average}'
-v オプションで変数を渡しつつ、$0 ~ VAR でマッチさせる$ awk -v VAR '$0 ~ VAR{print $0}' FILE
VAR は変数名FILE は処理するファイル名