ログファイルからいくつかの例外を抽出し、いくつかの処理を実行するシェルスクリプトを作成しています。現在、スクリプトで次のコマンドを使用して、例外が発生したログファイルの行番号を取得しています。例外行には、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
ERROR
sumという単語を含む行を取得するには、Exception
次のようにします。
grep -E "ERROR.*Exception" $file