ログファイルで、異常な行の行番号を探します。

ログファイルで、異常な行の行番号を探します。

ログファイルからいくつかの例外を抽出し、いくつかの処理を実行するシェルスクリプトを作成しています。現在、スクリプトで次のコマンドを使用して、例外が発生したログファイルの行番号を取得しています。例外行には、ERROR日付とタイムスタンプの後にキーワードが含まれています。

lineNos=($(grep -n ERROR $file | grep Exception | cut -d':' -f1 | tail -3))

現在のスクリプトのテスト中に、一部のログエントリに同じ行にエラーと例外が含まれていることがわかりましたが、これは実際に私が探しているエラーの種類(例5行)ではないので、私のスクリプトを次のように修正したいと思います。以下の例のログの3行のみが返されます。

2016-10-21 15:25:37,231 INFO Processinng current row  
2016-10-21 15:25:37,231 INFO com.test.main com.test.controller.CrashException: 
2016-10-21 15:25:37,231 ERROR com.test.main com.test.controller.CrashException: 
2016-10-21 15:25:37,231 DEBUG com.test.main com.test.controller.CrashException: 
2016-10-21 15:25:37,231 DEBUG Processing row with ERROR and Exception 
2016-10-21 15:25:37,231 DEBUG processed row 1: 

ベストアンサー1

ERRORsumという単語を含む行を取得するには、Exception次のようにします。

grep -E "ERROR.*Exception" $file

おすすめ記事