我正在尝试使用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
但这不起作用。
对此有何建议?
答案 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变体:
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