ENDブロックは終了処理に最適
※MACターミナル(BSD系)での動作確認です。
awkのブロック処理の順番は下記のようになります
1. BEGINブロック
2. メインブロック
3. ENDブロック
ENDブロックは最後に実行されますので、
終了処理に最適なので、うまく使いたいところです。
参考:awkで変数の初期化はBEGINブロック内が基本
逆に、初期化はBEGINブロックがわかりやすいですね。
可読性を高めるためにも、BEGINブロックとENDブロックはうまく使うと良いと思います。
サンプルコード
例えば、下記のin.txtがあったとします。
$ cat in.txt 2 4 6 7 8 9 2 4 7
下記がサンプルコードになります。
$ cat sample.awk
#!/bin/sh
cat in.txt | awk '
#BEGINブロック
BEGIN{
sum = 0
}
#メインブロック
{
sum += $1
}
#ENDブロック
END{
print "総和=" sum
}
'
下記が実行結果になります。
$ ./sample.awk 総和=49
