grep 中多个单词的“或”的正则表达式

grep 中多个单词的“或”的正则表达式
[Computer]$ grep "foo|bar" filename

我理解上述命令应该返回文件名中存在“foo”或“bar”的每一行。手册页确认 | 为正则表达式或符号,并且代码独立适用于“foo”和“bar”。我遗漏了什么?

答案1

grep 默认使用基本正则表达式 (BRE)。手册页中写道:

基本正则表达式与扩展正则表达式: 在基本正则表达式中,元字符 ?、+、{、|、( 和 ) 失去其特殊含义;而是使用反斜杠版本 \?、+、{、\|、( 和 )。

因此,您要么必须逃避|

grep "foo\|bar" filename 

或者打开扩展正则表达式:

grep -E "foo|bar" filename

相关内容