12 [Computer]$ grep "foo|bar" filename 我了解上述命令应返回文件名中退出“ foo”或“ bar”的每一行。手册页确认| 作为正则表达式或符号,并且代码分别适用于“ foo”和“ bar”。我想念什么? bash unix regex grep — 奥卡斯塔·埃舒 source
21 默认情况下,grep使用基本正则表达式(BRE)。从手册页: 基本正则表达式与扩展正则表达式:在基本正则表达式中,元字符?,+,{,|,(和)失去其特殊含义;而是使用反斜杠版本\?,+,{,\ |,(和)。 因此,您要么必须逃脱|: grep "foo\|bar" filename 或打开扩展的正则表达式: grep -E "foo|bar" filename — 詹宁格 source 我在手册页中看到了这一点,并被误解了。我认为这意味着 将使其查找完整的表达式“ foo | bar”,而不是各个表达式。感谢您的快速回复! — Ocasta Eshu 2012年 4 您也可以使用egrep(的别名grep -E)代替grep。 — 讲者2012年