【发布时间】:2012-10-24 13:58:11
【问题描述】:
我有一个很大的日志文件。我必须一个一个地应用多个正则表达式,在打印每个正则表达式的输出之前,我需要打印一些文本。
例如。
应用正则表达式后,我应该得到如下输出:
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 脚本中包含多个正则表达式以便以所需的方式打印。
【问题讨论】:
-
是的,您可以使用 awk 实现这一目标,但我们不知道如何为您提供帮助。请包括简化的样本数据,以及基于该样本数据的所需输出。还包括您尝试执行的代码、错误消息或输出不满足您要求的原因的描述。祝你好运。
-
@shellter:添加了所需的数据。