ログ内のテキストを検索し、そのテキストを含むブロックを表示するには、grep / awk / sedをどうすればよいですか?

ログ内のテキストを検索し、そのテキストを含むブロックを表示するには、grep / awk / sedをどうすればよいですか?

私は次のようなものを探していますこれ

ログは次のとおりです。

[09:44:22] [main] ERROR [url/location] - A ONE LINE ERROR
[09:44:22] [main] ERROR [url/location] - Another ERROR 
[09:44:22] [main] SOMETHING DIFFERENT
[09:44:22] [main] SOMETHING DIFFERENT AGAIN
[09:44:22] [main] WARN [url/location] - ANOTHER ONE LINE WARN

行は行をたどり、行の間に空白行はありませんが、特定のフラグメントに関する追加情報が利用可能な場合は、時々インデントされます。

ERROR含まれる各行を抽出し(理想的にはAnd / Orなどを抽出できるスクリプトで)、パラメータに従って表示できるようにしたいです。エラーなどを見つけるためにログを確認する方が簡単になります。ERRORFAILWARN

ベストアンサー1

GNU grep非常に簡単にこれを行うことができます。からman grep

2つの正規表現は中位演算子で連結することができる。結果の正規表現は、2つのサブ式に一致するすべての文字列に一致します。

grep "ERROR\|FAIL\|WARN" /path/to/example.log

egrepシンボルをエスケープする必要はありません|

egrep "ERROR|FAIL|WARN" /path/to/example.log

おすすめ記事