【mac】grepで半角カナを検索できずにハマった

以下のコマンドでいけると思ったのだが意図した動きにならずに色々調べるハメになったのでメモしておく。

$ grep '[ア-ン]' file
使われているロケール文字コードが正しいか?
$ locale
LANG="ja_JP.UTF-8"
LC_COLLATE="ja_JP.UTF-8"
LC_CTYPE="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME="ja_JP.UTF-8"
LC_ALL=

問題なさそうだった

[ア-ン]の指定の仕方は正しいのか?

http://orange-factory.com/sample/utf8/code3-ef.html
こちらを見るとア=EFBDA7 ン=EFBE9Dの範囲でちゃんと連続しているので問題なさそう。

日本語が使えない?
$ grep [0-9] file

これだと意図した動きになる

$ grep [ア-ン] file

これでも意図した動きにならない

借りてるVPS(CentOS6)だと日本語でも意図した動きになる

mac

$ grep -V
grep (BSD grep) 2.5.1-FreeBSD

centos

$ grep -V
grep (GNU grep) 2.20

BSDGNUgrepの系統が違うぽい。
その後調べるとhomebrewでggrepというのが入れられぽい。

mac

$ brew install ggrep
$ ggrep -V
ggrep (GNU grep) 3.1

CentOSと同じGNU grepがインストールされた。

$ ggrep '[ア-ン]' file

検索できた!

BSD grepだと日本語の正規表現検索が上手くできないという解釈でよいのかな。。以上です