grepの結果がbashになる前後の行をフェッチするにはどうすればよいですか?で説明されているように、たとえば10、7、または14だけでなく、一致する前にすべての行を表示したい。
どうすればいいですか?一致した行が含まれているかどうかは関係ありません。
たとえば、次の代わりに:
... | grep -B 10 -- "foo"
欲しい:
... | grep -B -- "foo"
しかし、この最後のコードは機能しません。
承認された回答:
-
試合を含めて
sed '/foo/q' fileqを使用することをお勧めします uit
sed一致するものが見つかるとすぐに、それ以外の場合はsedファイルを読み続けて時間を無駄にしますが、これは大きなファイルの場合はかなりの量になります。 -
試合を除く
sed -n '/foo/q;p' file-nフラグは、pに到達する行のみを意味します コマンドが出力されます。foo以降 行はqをトリガーします uitアクション、pに到達しません したがって、印刷されません。-
sedの場合 はGNUであり、これは次のように簡略化できますsed '/foo/Q' file
-
参考資料
-
/foo/—アドレス -
q、p—よく使用されるコマンド -
Q—GNUSed拡張コマンド -
-n—コマンドラインオプション