マッチした前の行の表示



マッチした前の行 3 行を表示したいというものです。
awk ではファイルハンドルとかでジャンプすることはできませんから、最初から配列に押し込めながら処理する手法が一般的で、そうした解法が示されています。

awk '{a[NR]=$0}$0~/string/{printf("%s\n%s\n%s\n",a[NR-3],a[NR-2],a[NR-1])}' file