lgrep

先に簡単にまとめておくと, 普通の grep コマンドだと日本語を検索できないってことを知って,
日本語を検索したければ, lgrep を使おうっていうことが分かったというメモ.



詳細ないきさつをば.
SKK 使ってて, 辞書に顔文字登録をしてみた.
「こなた」という語に対して, 「(=ω=.)」のように.
これを登録してふと思った.
ファイル .skk-jisyo に記録されてるんだろうと思うけど, どのように保存されてるのだろうって.
さっそく grep で検索してみたけどでない.
.skk-jisyo じゃないのかなあ, とか思って色々やってみてわかったのが,
日本語を検索してないってこと.


google 先生に尋ねてみたところ, lgrep というのを使ってみればよさそうというのが分かった.
以下が結果.
普通に grep で検索した場合と, lgrep を使った場合.

$ nkf .skk-jisyo | grep こなた
$ nkf -e .skk-jisyo | grep こなた
$ nkf .skk-jisyo | lgrep こなた
$ nkf -e .skk-jisyo | lgrep こなた
こなた /(=ω=.)/
にほんこなた /ニホン(=ω=.)/コナタ/
なんてこなたい /ナンテ/( =ω=.)\コナタイ/

やってから分かったけど, 別に nkf -e じゃなくて, 普通に cat で大丈夫だ.
nkf を使うなら, -e, -s, -w のどれを付けないと駄目っぽい.
cat でやった場合.

$ cat .skk-jisyo | lgrep こなた
こなた /(=ω=.)/
にほんこなた /ニホン(=ω=.)/コナタ/
なんてこなたい /ナンテ/( =ω=.)\コナタイ/
$ cat .skk-jisyo | grep こなた

jgrep というのもあるらしいけど, 自分の環境にはなかったし, lgrep が使えたので, まあよしとするということで.



おっ, cat と nkf 使った場合だと, 半角カナに違いがでてる.
何でだろう?
nkf が半角カナを変換してるのかな?

更新時刻

  • 1かいめ 2007年, 5月26日, 6:50