どのようにLinuxでの出力から(フィルターアウト)特定のJavaスタック・トレースを削除するには?

セバスチャンDiot:

テストを実行するときに私たちのMavenのビルドは、Javaスタック・トレースの多くを生成します。私たちのビルドサーバーでは、私はそれらの一見のようなもの、具体的には、それらのうちのいくつかをフィルタリングしたいと思います:

javax.naming.NameNotFoundException: some.name.blabla
    at ...
    at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:XXX)

出力の大きさを小さくします。テストが失敗した場合、我々は常に完全な出力を得るために、ローカルでのテストを再実行することができます。

私は、我々のコードまたは当社のMavenのビルドファイルには何も変更せずに、これを実行したいと思います。私はパイプにいくつかのLinuxのシェルコマンドにMavenの出力、それらのスタック・トレースアウト、そのフィルタをしたいです。

これまでのところ、私だけ抽出したい質問/回答を見つけた/それらをキャプチャする、またはフィルタ彼らは離れてJavaコードの変更、またはMavenの、またはEclipse、またはそのフィルタを使用して、すべてのスタック・トレースを。

イワン:

このようなテストファイルの場合

$ cat file
str1
javax.naming.NameNotFoundException: some.name.blabla
    at ...
    at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:XXX)
str2
javax.naming.NameNotFoundException: some.name.blabla
    at ...
    at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:XXX)
str3

使い方 sed

$ sed '/NameNotFoundException/,/ForkedBooter/d' file
str1
str2
str3

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=276146&siteId=1