BEGINとENDを使えば、特定条件に一致した行をカウントするのも比較的楽にできます。
BEGIN { count = 0 } $1 % 3 == 0 && $1 % 5 == 0 { count = count+1 } END { print "I found " count " fizzbuzz numbers. :)" }
てなファイルを用意した上で
$ seq 1 100 | awk -f test.awk
とやれば、fizzbuzzに対応する数値の個数がでてきます。
処理には正規表現も使える上、-Fオプションで切り出した要素毎に指定もできます。
なので
- 2番目のカラムが偶数
- 4番目のカラムに特定の文字列が含まれる
- 5番目のカラムは3で割り切れる
といった複合条件にも対応しやすいという利点があります。