grepでORを使用する方法は?

grepでORを使用する方法は?

grep 'd(o|i)g' a.txta.txtインクルードを実行しましたが、dig何も返されませんでした。dogこれが正しい一致方法ですかdig

答え1

はい、d(o|i)gこれは正しい方法です。d[oi]g個々のキャラクターを扱うので、これを行うこともできます。

-E拡張正規表現を取得するには、grep呼び出しでこのフラグを使用する必要があります。

$ cat a.txt
bird
dog
cat
dug
$ grep 'd(o|i)g' a.txt
$ grep -E 'd(o|i)g' a.txt
dog

答え2

正規表現のメタ文字をエスケープする必要があります。

> echo dig | grep "d\(o\|i\)g"
dig

、またはERE(「拡張正規表現」)に切り替えることができます。

echo dig | grep -E "d(o|i)g"
dig

答え3

試してみることもできますが、grep 'd[io]g'これは単一のキャラクターにのみ適用されます。

関連情報