[Computer]$ grep "foo|bar" filename
上記のコマンドは、「foo」または「bar」が存在するファイル名の各行を返す必要があることを理解しています。マニュアルページで確認します|正規表現またはシンボルとコードが「foo」と「bar」に対して独立して機能するため。何が欠けていますか?
grepはデフォルトで基本正規表現(BRE)を使用します。 manページから:
基本正規表現と拡張正規表現:基本正規表現では、メタ文字?、+、{、|、(、および)は特別な意味を失います。代わりに、円記号バージョンの\?、+、{、\ |、(、および)を使用します。
したがって、|
をエスケープする必要があります。
grep "foo\|bar" filename
または、拡張正規表現をオンにします。
grep -E "foo|bar" filename