0

'wonder' という単語を含む複数の行を含む UNIX のファイルがあります。
(wonder を含む各行には、wonder のインスタンスが 1 つしかありません)
'wonder' の 'n' 回目の出現を含む行と、その前後の x 行を抽出したいと思います。

上記を可能にするスクリプトの助けに感謝します。

4

3 に答える 3

0

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 を使用します。)

于 2013-11-12T03:42:31.617 に答える