シェルスクリプトにて、ログから特定の結果を抽出したい

前提

シェルスクリプトにて、ログから条件に一致する結果を抽出したいです。
ログの出力結果は変更できない状態です。

出力されるログの内容

test.log

INFO - 2022-11-01 09:21:55 ~~~~~ WARNING - 2022-11-01 09:21:51 エラーAAA Array ( [aaa] => 101 [bbb] => にんじん [ccc] => 設定が不足しています。 設定値:10 ) WARNING - 2022-11-01 09:21:53 エラーAAA Array ( [aaa] => 101 [bbb] => たまねぎ [ccc] => 設定が不足しています。 設定値:11 ) WARNING - 2022-11-01 09:21:54 エラーAAA Array ( [aaa] => 101 [bbb] => かぼちゃ [ccc] => 設定が不足しています。 設定値:11 ) INFO - 2022-11-01 09:21:55 ~~~~~ INFO - 2022-11-01 09:21:56 ~~~~~ WARNING - 2022-11-01 09:22:54 エラーBBB Array ( [aaa] => 222 [bbb] => かぼちゃ [ccc] => これはエラーBBB )

抽出条件

エラーAAA で aaa の内容とcccの内容のみ抽出しようとしています。
さらにaaa+cccの内容で重複排除しようとしています。

希望する結果

上記ログの場合は、下記のような出力をしたいです。
[aaa] => 101
[ccc] => 設定が不足しています。 設定値:10
[aaa] => 101
[ccc] => 設定が不足しています。 設定値:11

grepの正規表現でINFO部分や他のAAA以外のエラーを排除することはできたのですが、
重複排除の方法が思い浮かばず、進めなくなってしまいました。
grep -A 5 -E ^WARNING.*エラーAAA test.log

grepにてどうにかできないか考えていますが、
他の方法が浮かばないだけで、特にコマンドにこだわりはありません。

コメントを投稿

0 コメント