'wonder' という単語を含む複数の行を含む UNIX のファイルがあります。
(wonder を含む各行には、wonder のインスタンスが 1 つしかありません)
'wonder' の 'n' 回目の出現を含む行と、その前後の x 行を抽出したいと思います。
上記を可能にするスクリプトの助けに感謝します。
grep -n -m 4 を使用して、最初の 4 つの一致の行番号を出力できます。したがって、grep -n -m 4 | tail -1 は、4 番目の一致の行番号を示します。
MATCH=4; LINES=5
span=$(($LINES*2+1))
line=`grep -n -m $MATCH wonder file | tail -1`
一致する行番号があれば、頭と尾で +/- N 行を出力できます...
end=$(($line+$LINES))
head -$end file |tail -$span
または、awk を使用して一致数をカウントし、その一致後に行を出力することもできます。難しいのは、その前に N 行を印刷するために巻き戻すことです。行をバッファリングすることもできますが、それはより困難です。
(私は通常、このようなものに perl を使用します。)