我想搜索包含“ 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不同。
我不习惯正则表达式。我怎么能做到这一点?
答案 0 :(得分:0)
这可能是重复的。
awk '/cmaeventd/ && ! /2424/' logfile
根据你的例子,我想你真的想要专注于在cmaeventd
之后立即排除2424出现在方括号中的行。你需要反斜杠,因为方括号具有特殊含义。
awk '/cmaeventd/ && !/cmaeventd\[2424\]/' logfile
答案 1 :(得分:-1)
试试这个正则表达式:.*(?=cmaeventd)(?!.*2424).+
请参阅此DEMO以查看其工作原理。