NR and NF
率直な素直な初心者からの質問ですね。
- /foo/ とした時に、どの NF が該当するのか分かりますか?
- 該当したときに NR をインクリメント or デクリメントできますか?
こういう、「どうなんだっけ?」という困ったときにも Ed 氏が回答しています。(苦笑)
まず第一問は、以下のとおり。
awk '/pattern/{for (i=1; i<=NF; i++) if ($i ~ /pattern/) print i}'
要するに故意に調べないと分からないんですね。
次に第二問で、前の行を表示するには、
awk '/foo/{print prev; for (i=1; i<=NF; i++) if ($i ~ /foo/) print i} {prev=$0}'
後の行を表示するには、
awk 'found{print;found=0}/foo/{found=1; for (i=1; i<=NF; i++) if ($i ~ /foo/) print i}'
配列を使わない見事な回答です。
私だと配列使ってしまうかも・・・。(ダメダメじゃん)