grep -vとgrep -Aを組み合わせて効果を得る方法はありますか?

grep -vとgrep -Aを組み合わせて効果を得る方法はありますか?

(実際に)とをgrep組み合わせる方法や他の方法はありますか?つまり、むしろgrep -vgrep -A含む文字列の後のすべてのx行、入らないようにするすべて。

grepスイッチを忘れた人のためのクイックアラート:通常のgrepとは異なり、
cat file.txt | grep -v blah 「blah」をフィルタリングすると、
cat file.txt | grep -A7 foo 「foo」が発生するたびに7行が表示されます
(はい、ここでは必要ではないことを知っていますcatgrepステートメントを一緒にリンクしてこれを行う場合。

ただそう言っては
cat file.txt | grep -A100 bar | grep -vA100 foo
いけません。 「Working」は、「bar」に一致する行と「foo」に一致する行の間のすべてのコンテンツ(最大100行)を表示するように定義されています。

ベストアンサー1

barsedを使用してaからaにすべてのチャンクを抽出する簡単な方法があります。foo

sed -n '/bar/,/foo/p'

またはawkを使用してください:

awk '/bar/, /foo/'

チャンクを切り取るにはもう少し複雑です(awkでは、sedでははるかに複雑です)。解決策は次のとおりです。

awk -vmax_lines_per_chunk=100 '
    /bar/ {n=max_lines_per_chunk}
    /foo/ {if (n) print; n=0}
    n {--n; print}
'

おすすめ記事