shコマンドでlogファイルの切り出しを行いたいのですが、マッチさせたい条件が3つあり正規表現を使っています。(ipアドレス、エラーコード、ユーザーエージェント)
grepで正規表現を使っているのですが、1行でマッチしたものが出力した時に3行になってしまうので、マッチした3項目を1つにまとめる事は出来ませんでしょうか?
ワンライナーでtrを使うと全文無改行になってしまうため質問した次第です。
対象ファイルは3万行以上あります。
grep -Ero '(([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).){3}([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])|エラーコード:[a-z][0-9]{1,8}|ua:.*$' app.txt >> appsc.txt
logイメージ
time:2016-01-01 01:00:02 service_id:00004 level:ERROR test:testaaa server:1001 host:0.1.2.3 controller:Controller method:index message:エラーメッセージ。エラーコード:01234567 message_detail:[] uri:http://test/test/test/get ua:Mozilla/5.0 xxxxxxxxxx pid:10131 session_id:1234567sdadsgaasdfaadfadsfa time:2016-01-01 01:02:02 service_id:00004 level:ERROR test:testaaa server:1001 host:0.1.2.4 controller:Controller method:index message:エラーメッセージ。エラーコード:01234567 message_detail:[] uri:http://test/test/test/get ua:Mozilla/5.0 xxxxxxxxxx pid:23401 session_id:1234567sdadsgaasdfaadfadsfa
出力イメージ
0.1.2.3 エラーコード:01234567 ua:Mozilla/5.0 xxx1
0.1.2.4 エラーコード:11234568 ua:Mozilla/5.0 xxx2
実現できればgrepでなくても大丈夫です
回答2件
あなたの回答
tips
プレビュー