回答:
通常の正規表現では、文字(
、|
および)
エスケープする必要があります。だからあなたは使うべきです
$ grep "^ID.*\(ETS\|FBS\)" my_file.txt
拡張正規表現(-E
)オプションを使用する場合、エスケープは必要ありません。man grep
セクション「Basic vs Extended Regular Expressions
」を参照してください。
複数のブランチ(|
as or
)を使用する場合は、互換性を高めるために、「modern RE」(別名)を使用することを明示的に指定することをお勧めします。ERE。
これを行うには、grep -Eを使用します。
grep -E "^ID.*(ETS|FBS)" my_file.txt
RE、ERE、および「現代の」ERストーリー全体の詳細については、を参照してくださいman 7 regex
。
または、のegrep
代わりに使用できますgrep
が、次のように読むことができますman grep
。
egrepはgrep -Eと同じです。fgrepはgrep -Fと同じです
(...)
egrepまたはfgrepのいずれかとしての直接呼び出しは非推奨です
egrep
代わりに使用することもできますgrep -E
。