回答:
grepはデフォルトで基本正規表現(BRE)を使用します。manページから:
基本正規表現と拡張正規表現: 基本正規表現では、メタ文字?、+、{、|、(、および)は特別な意味を失います。代わりに、円記号バージョンの\?、+、{、\ |、(、および)を使用します。
だからあなたはどちらかをエスケープする必要があります|
:
grep "foo\|bar" filename
または、拡張正規表現をオンにします。
grep -E "foo|bar" filename
egrep
(のエイリアスgrep -E
)を使用することもできgrep
ます。