grep -E が正規表現対応オプションであると勘違いしていた
grep って、global regular expression print の略なので、それ自体が正規表現で一致したものを抽出するコマンドなんですね。
正規表現を使いたい時に、-E オプションを付けるものだと勘違いしていました。
いま、以下のように2行が書かれたファイル(test.txt)があるとします。
$ cat > test.txt 1024 hatena
$ grep ^1 test.txt 1024
はい。特に -E オプションを付けなくても正規表現でマッチしてくれました。
ところが。
$ grep '^(1|h)' test.txt
これは何も返してくれません。
そこで、-E オプションを付けてみると。
$ grep -E '^(1|h)' test.txt 1024 hatena
期待する結果を返してくれました。
E オプションをつけることで、拡張正規表現と呼ばれる式が使用出来るようになります。
egrep でもOKです。
$ egrep '^(1|h)' test.txt 1024 hatena
拡張正規表現を使える = 正規表現を使えると間違って覚えてしまっていたようです。
何気に使用しているオプションについて、意味を正しく理解していないのは宜しくないですね。