grep 中的“-e”“指定多个搜索模式”是什么意思?

grep 中的“-e”“指定多个搜索模式”是什么意思?

来自 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

POSIX grep 描述

默认情况下,如果任何模式 [...] 与除终止符之外的行的任何部分匹配,则应选择输入行<newline>

相关内容