grepの結果がbashになる前後の行をフェッチするにはどうすればよいですか?で説明されているように、たとえば10、7、または14だけでなく、一致する前にすべての行を表示したい。
どうすればいいですか?一致した行が含まれているかどうかは関係ありません。
たとえば、次の代わりに:
... | grep -B 10 -- "foo"
欲しい:
... | grep -B -- "foo"
しかし、この最後のコードは機能しません。
承認された回答:
-
試合を含めて
sed '/foo/q' file
qを使用することをお勧めします 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
—コマンドラインオプション