私は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
。