我有一个很大的日志文件。我必须一个一个地应用多个正则表达式,在打印每个正则表达式的输出之前,我需要打印一些文本。
例如。
应用正则表达式后,我应该得到如下输出:
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 脚本中包含多个正则表达式,以便以所需的方式打印。