パイプでawkを使ったとき、その変数は共通で持ち越せます。
……今まで使ってて気づかんかったんかという話ですが……
実際のところ
seqで10行作って、BEGINでcntを定義、毎回2足していくという単純なモンの場合……
$ seq 1 10 | awk "BEGIN {cnt = 0}; {print cnt; cnt = cnt + 2;}" 0 2 4 6 8 10 12 14 16 18
パイプでawkを使ったとき、その変数は共通で持ち越せます。
……今まで使ってて気づかんかったんかという話ですが……
seqで10行作って、BEGINでcntを定義、毎回2足していくという単純なモンの場合……
$ seq 1 10 | awk "BEGIN {cnt = 0}; {print cnt; cnt = cnt + 2;}" 0 2 4 6 8 10 12 14 16 18