NR and NF

率直な素直な初心者からの質問ですね。

  1. /foo/ とした時に、どの NF が該当するのか分かりますか?
  2. 該当したときに 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}'

配列を使わない見事な回答です。
私だと配列使ってしまうかも・・・。(ダメダメじゃん)