前提
シェルスクリプトにて、ログから条件に一致する結果を抽出したいです。
ログの出力結果は変更できない状態です。
出力されるログの内容
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 コメント