grep: 一致後の特定の行を出力する

grep: 一致後の特定の行を出力する

grep を使用して、一致が見つかった後、特定の行数に該当する行を出力する方法はありますか? たとえば、一致した行、一致後の 8 行目、一致後の 17 行目を出力したいのですが、これは可能ですか?

を使用して次の 17 行を出力できることはわかっていますgrep -A17が、その間にあるすべてのものを削除して有用な行を取得できるかどうかを知りたいです。

答え1

パイピングを試してくださいawk blah | grep stuff -A17 | awk "NR==1{print} NR==8{print} NR==17{print;exit}" これにより、1 行目、8 行目、17 行目のみが出力されます。

繰り返しパターンを含める場合は、mod (%)演算子を使用できます。

awk "(NR-1)%17 == 0{print} (NR-8)%17 == 0{print} (NR-17)%17 == 0{print}"

関連情報