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


12
[Computer]$ grep "foo|bar" filename

我了解上述命令应返回文件名中退出“ foo”或“ bar”的每一行。手册页确认| 作为正则表达式或符号,并且代码分别适用于“ foo”和“ bar”。我想念什么?

Answers:


21

默认情况下,grep使用基本正则表达式(BRE)。从手册页:

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

因此,您要么必须逃脱|

grep "foo\|bar" filename 

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

grep -E "foo|bar" filename

我在手册页中看到了这一点,并被误解了。我认为这意味着 将使其查找完整的表达式“ foo | bar”,而不是各个表达式。感谢您的快速回复!
Ocasta Eshu 2012年

4
您也可以使用egrep(的别名grep -E)代替grep
讲者2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.