与grep交替

时间:2013-09-21 18:18:48

标签: unix grep

我正在尝试使用grep来捕获包含两个句子之一的文件。

要捕捉我使用的一个句子

grep -L "Could not place marker for right window edge" *log

对于两个句子,看看我试过的文件中是否存在其中任何一个

grep -L "Could not place marker for right window edge \| Could not place marker for left window edge" *log

但这不起作用。

对此有何建议?

3 个答案:

答案 0 :(得分:1)

我怀疑你引入的起始和尾随空间是导致问题的原因。尝试:

$ egrep -L 'this is sentence|another different sentence' *log

或者使用fgrep,因为您只是寻找固定字符串而不是正则表达式:

$ fgrep -Le 'this is sentence' -e 'another different sentence' *log

如果通过句子你实际上是指行,那么你也可能对-x参数感兴趣。

  

-x, - line-regexp

     

仅选择与整行完全匹配的匹配项。 (-x由POSIX指定。)

您正在使用-L显示没有匹配的文件这是您真正想要的,或者您的意思是-l只显示匹配的文件名?

答案 1 :(得分:1)

尝试这3个变体:

grep -l 'this is sentence\|another different sentence' *log
grep -lE 'this is sentence|another different sentence' *log
grep -lE '(this is sentence|another different sentence)' *log

如果要查找匹配的文件,-L不是正确的开关;而是使用来自-l的{​​{1}}:

man grep

答案 2 :(得分:0)

使用awk

awk '/Could not place marker for right window edge|Could not place marker for left window edge/' *.log

或者这可以像这样做

awk '/Could not place marker for (right|left) window edge/' *.log