来自 grep 手册
‘-e pattern’ ‘--regexp=pattern’
这可以用来指定多个搜索模式,或保护以“-”开头的模式。 (“-e”由 POSIX 指定。)
“指定多种搜索模式”是什么意思?
这是否意味着输出包含指定的所有搜索模式的每一行-e
?如果是,它是否与管道多个 grep 执行相同的操作,每个 grep 都与其中一个模式匹配?
谢谢。
答案1
为了澄清现有的评论和答案:不,它不像OP描述的那样工作。
实际上:
grep -e foo -e bar -e baz myfile
打印出包含以下内容的行任何一个 foo
或者 bar
或者 baz
。
grep foo myfile | grep bar | grep baz
打印出包含以下内容的行foo
和 bar
和 baz
(不一定按照这个顺序)。
答案2
不,这并不意味着这些模式是 AND 在一起的。
这意味着您可以指定多个模式,而第二个和后续模式不会被解释为文件名。
考虑以下:
grep pattern1 file1
够简单的。现在考虑:
grep pattern1 file1 file2
和:
# This doesn't work
grep pattern1 pattern2 file1 file2
# But this does. There's no difference that's obvious to a computer.
grep pattern1 file1 file2 file3
你看到问题了吗?
但是,使用-e
,您可以执行以下操作:
grep -e pattern1 -e pattern2 file1 file2
答案3
默认情况下,如果任何模式 [...] 与除终止符之外的行的任何部分匹配,则应选择输入行
<newline>
。