less
ランダム文字列 "foo"の最初のインスタンスから最後のインスタンスまでどのように表示できますか?
このランダムな文字列は、ログのほぼすべての行に表示されます。grep "foo" bar.log | less
すべての関連行には表示されないため、これを実行したくありません。
ファイルが次のようになるとします。
1 Random junk I don't want to see
2 Care about (foo)
3 Care about (foo)
4 Care about
5 Care about (foo)
6 Other random junk I don't want to see
残念ながら、無視したい行は良いパターンに従わない。そうでなければちょうどgrep -v 'insert pattern here'
。
less
どういうわけか、次の内容を統合する方法を知りたいです。
2 Care about (foo)
3 Care about (foo)
4 Care about
5 Care about (foo)
grep "foo" bar.log | less
私は興味のある4行を無視しているので動作しません。
ベストアンサー1
ある場合はawk
、次のようにできます。
awk '/foo/{print b$0;b="";x=1;next} x{b=b$0"\n"}' bar.log | less
aがfoo
表示されたら、バッファ(b
変数)と現在の行を印刷してバッファを消去します。
foo
それ以外の場合は(変数)がすでに存在する場合にのみ、x
現在の行をバッファリングします。