大きなログファイルがあります。複数の正規表現を1つずつ適用する必要があり、各正規表現の出力を印刷する前に、テキストを印刷する必要があります。
たとえば。
正規表現を適用した後、次のような出力が得られるはずです。
Text 1
Output of first regex
....
Text 2
Output of second regex
....
Text 3
Output of third regex
....
ここで、テキスト1、テキスト2、およびテキスト3は挿入されたテキストです。AWKを使用してこれを達成できますか?
編集:
サンプルログファイルの一部を追加しています。
[1351059075] SERVICE ALERT: server1:Email;CRITICAL;HARD;3;Connection refused
[1351059898] SERVICE ALERT: server1:Email;CRITICAL;HARD;3;Connection refused
[1351073883] SERVICE ALERT: server2:History ;CRITICAL;HARD;3;HTTP CRITICAL
[1351073886] SERVICE ALERT: server2:History ;CRITICAL;HARD;3;HTTP CRITICAL
[1351088949] SERVICE ALERT: server3:PSU ;CRITICAL;HARD;3;Connection refused
Email
ここでHistory
、すべてを分離したいPSU
ので、出力は次のようになります。
Email:
[1351059075] SERVICE ALERT: server1:Email;CRITICAL;HARD;3;Connection refused
[1351059898] SERVICE ALERT: server1:Email;CRITICAL;HARD;3;Connection refused
History:
[1351073883] SERVICE ALERT: server2:History ;CRITICAL;HARD;3;HTTP CRITICAL
[1351073886] SERVICE ALERT: server2:History ;CRITICAL;HARD;3;HTTP CRITICAL
PSU:
[1351088949] SERVICE ALERT: server3:PSU ;CRITICAL;HARD;3;Connection refused
私は簡単なawkスクリプトを書きました:
awk 'BEGIN {print "Email:\n\n"} /SERVICE ALERT: .*Email.*CRITICAL;HARD/ {print $0}' logfilename
希望する方法で印刷するために、同じawkスクリプトに複数の正規表現を含める方法がわかりません。