TAB で始まる複数行とグループの最初の行の前の行を一致させるにはどうすればよいですか?

TAB で始まる複数行とグループの最初の行の前の行を一致させるにはどうすればよいですか?

いくつかのサードパーティのログファイルがあり、コマンドラインからエラーを抽出しようとしています。

ログは次のとおりです。

time=1
time=2
time=3
  at com.test.com....
  at com.test.com....
  at com.test2.com....
time=4
time=5
time=6
time=7
time=8
time=9
  at org.badstuff.com...
  at org.badstuff.com...
  at org.badstuff.com...
time=10
time=11

で始まる行はatTAB文字で始まるので、簡単に一致させることができます。

このファイルからこれらのスタックトレースをどのように抽出できますか?そして毎回最初のスタックトレースの前に何行ありますか?私はMacを使用していますが、可能であればMac / Linuxで動作する汎用ソリューションを好みます。両方とも頻繁に作業する必要があるからです。

上記の例では、次のようになります。

time=2
time=3
  at com.test.com....
  at com.test.com....
  at com.test2.com....
time=8
time=9
  at org.badstuff.com...
  at org.badstuff.com...
  at org.badstuff.com...

ベストアンサー1

たとえば、-Aafterコンテキスト、-Beforeコンテキスト、または-Cコンテキストオプションを使用します。grep

grep -B2 '^\t' file

おすすめ記事