(実際に)とをgrep
組み合わせる方法や他の方法はありますか?つまり、むしろgrep -v
grep -A
含む文字列の後のすべてのx行、入らないようにするすべて。
grepスイッチを忘れた人のためのクイックアラート:通常のgrepとは異なり、
cat file.txt | grep -v blah
「blah」をフィルタリングすると、
cat file.txt | grep -A7 foo
「foo」が発生するたびに7行が表示されます
(はい、ここでは必要ではないことを知っていますcat
。grep
ステートメントを一緒にリンクしてこれを行う場合。
ただそう言っては
cat file.txt | grep -A100 bar | grep -vA100 foo
いけません。 「Working」は、「bar」に一致する行と「foo」に一致する行の間のすべてのコンテンツ(最大100行)を表示するように定義されています。
答え1
bar
sedを使用して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}
'