学習する機械、学習しない人間

2009-03-18

grepとegrepでORによるマッチングを行う際に注意すること

grepでは "\|" を使い、egrepでは "|" を使わなくてはいけない。


$ cat sample
aaa
abc
def
$ grep 'def\|efg' sample
def
$ egrep 'def|efg' sample
def

なお、grepで "\|" を使う場合は、GNU grepであるかどうかを確認したほうがいいようだ。


|

\|

これら二つの演算子は、選択を行なうためのものです。演算子の左右に置かれた部分正規表現のいずれかにマッチします。 ^X|0 は先頭にXがある文字列か、0を含む文字列にマッチします (^と|は両方とも正規表現演算子ですが、その優先順位は ^が上のため、このような解釈になります)。 \|は、GNU grepやGNU sedで用いられる等価な演算子です。これは他の処理系では使えないでしょう。

正規表現メモ

はてなユーザーのみコメントできます。はてなへログインもしくは新規登録をおこなってください。