REGEX:搜索包含“cmaeventd”但不包含数字“2424”的事件

时间:2015-06-24 09:46:06

标签: regex

我想搜索包含“ cmaeventd ”但不包含数字“ 2424 ”的事件。我正在使用RHEL。

例如,如果我有以下几行:

HP Appliance Hardware Error: Jun 20 22:41:30 pnn-a cmaeventd[2424]: Surface Analysis Pass Information, LDrv=0 Number of passes=34
HP Appliance Hardware Error: Jun 20 22:41:30 pnn-a cmaeventd[2624]: Surface Analysis Pass Information, LDrv=0 Number of passes=34
HP Appliance Hardware Error: Jun 20 22:41:30 pnn-a cmaeventd[2484]: Surface Analysis Pass Information, LDrv=0 Number of passes=34

正则表达式应该只提取行:

HP Appliance Hardware Error: Jun 20 22:41:30 pnn-a cmaeventd[2624]: Surface Analysis Pass Information, LDrv=0 Number of passes=34
HP Appliance Hardware Error: Jun 20 22:41:30 pnn-a cmaeventd[2484]: Surface Analysis Pass Information, LDrv=0 Number of passes=34

因为事件编号与2424不同。

我不习惯正则表达式。我怎么能做到这一点?

2 个答案:

答案 0 :(得分:0)

这可能是重复的。

awk '/cmaeventd/ && ! /2424/' logfile

根据你的例子,我想你真的想要专注于在cmaeventd之后立即排除2424出现在方括号中的行。你需要反斜杠,因为方括号具有特殊含义。

awk '/cmaeventd/ && !/cmaeventd\[2424\]/' logfile

答案 1 :(得分:-1)

试试这个正则表达式:.*(?=cmaeventd)(?!.*2424).+

请参阅此DEMO以查看其工作原理。