していた勘違い
option | 勘違い |
---|---|
-e | 基本正規表現。複数個書ける。 |
-E |
-e の拡張正規表現版。複数個書ける。 |
例えば grep -e xxx -e yyy
は grep -E xxx -E yyy
とも書けると思っていた。
正しくは
-E は、拡張正規表現を使うためのフラグ。よって -E を複数個書けないし、そもそも expression を引数にとることができない。
# イケる
$ echo aaa | grep -e bbb -e 'a\{3\}'
aaa
# イケない
$ echo aaa | grep -E bbb -E 'a{3}'
grep: a{3}: No such file or directory
cf. man grep
-E, --extended-regexp
Interpret PATTERN as an extended regular expression (ERE, see below).
:
-e PATTERN, --regexp=PATTERN
Use PATTERN as the pattern. If this option is used multiple times or is combined with the -f (--file) option, search for all patterns given. This option can be used to protect a pattern
beginning with “-”.
まとめ
基本のキではあったが -E
は引数をとらないフラグ、という理解がなかった。
もし拡張正規表現を複数定義したい場合は -E と -e を組み合わせればよさそう。
$ echo aaa | grep -E -e 'bbb' -e 'a{3}'
aaa