Grep 'OR'正規表現の問題

Grep 'OR'正規表現の問題

私はgrepと正規表現を使用して、ファイル内の2つの可能な文字列のうちの1つに一致する行を見つけようとしています。これは私のgrepです。

$ grep "^ID.*(ETS|FBS)" my_file.txt

上記のgrepは結果を返しません。ただし、次のいずれかを実行する場合:

$ grep "^ID.*ETS" my_file.txt  

または

$ grep "^ID.*FBS" my_file.txt  

私は特定の行に一致します。私のOR正規表現が一致しないのはなぜですか?ご協力ありがとうございます!

ベストアンサー1

一般的な正規表現、文字(、エスケープを|使用してください。)だからあなたは使用する必要があります

$ grep "^ID.*\(ETS\|FBS\)" my_file.txt

使用時にエスケープは必要ありません。拡張正規表現-E)オプション。man grep「」セクションを参照してくださいBasic vs Extended Regular Expressions

おすすめ記事