grepを使用して複数のログの一意のエラーをフィルタリングする方法は?

grepを使用して複数のログの一意のエラーをフィルタリングする方法は?

Ubuntuで次のモードを試してみました。

grep -Eri "warning|error|critical|severe|fatal" --color=auto

/var/logとそのサブフォルダにあるさまざまな.logファイルで関連するエラーを繰り返し見つけます。

私が経験している問題は、式が実行されると数万行の一致が印刷されることです。次のいずれかの方法でこれをフィルタリングしたいと思います。

  1. たとえば、それ以上の場合は印刷しますが、一致をスキップします。同じ一致が3つあります。
  2. 一意の一致のみを表示する(例:見つかった各行のいずれかを印刷)

出力を別の場所にパイプしてこれを実行できますか?現時点では、各ログにエラーがあるかどうかを確認するのに時間がかかるため、これをやろうとしています。しかし、私が使用している表現はそれ自体では使用できないほど多くの情報を印刷します。パイプを「赤」に設定しようとしましたが、強調表示が削除され、読みが難しくなり、出力が大きすぎる問題は解決されません。

一度に特定のファイルに表現を制限することもできることはわかっていますが、前述のように、一部のログは一致でいっぱいですが、他のログには一致がほとんどありません。したがって、重複するアイテムをさらにフィルタリングすることは非常に役立ちます。

以下は、私が検索している多くのログの1つにあるエラー行の例です。

./artifactory/artifactory-service.log:20:2021-07-20T08:45:30.248Z [jfrt ] [ERROR] [.j.a.c.g.GrpcStreamObserver:97] [c-default-executor-1] - refreshing affected platform config stream - got an error

そのようなエラーが何百ものある場合は、例えば表示したいと思います。次のゲームに進む前に最大3つまで可能です。

または、日付がログに表示される方法が原因です。特定の日付のみに一致するようにフィルタリングすると良いと思います。どうすればいいですか?日付フィルタリングは出力を大幅に制限します。

ベストアンサー1

おすすめ記事