UTF-8とシフトJISなどが混在するファイル群を日本語キーワードでgrepする時、
普通だと文字コード1つしか探せない。
$ grep -r キーワード .
例えば端末シェル環境がUTF-8ならUTF-8のファイルしか探せない。
もしシフトJISのファイルにおなじキーワードがあっても見逃してしまう危ない。
あ、そうだシフトJISも探さないと! ということでnkfコマンドを使う方法があるみたい。ヨシ!
$ grep -r `echo "キーワード" | nkf -s` .
だがnkfコマンドがなかった・・・
-bash: nkf: command not found
そんな時、phpが使えるなら代替できる。端末がUTF-8で、シフトJISのキーワードを探す時。
$ grep -r `php -r 'echo mb_convert_encoding("キーワード","cp932","utf-8");'` .
出力が読めるようにUTF-8に変換するならさらにパイプでつなげて。
$ grep -r `php -r 'echo mb_convert_encoding("キーワード","cp932","utf-8");'` . | php -R 'echo mb_convert_encoding($argn, "utf-8", "cp932")."\n";'
もっと簡単に書けたり文字コード自動判定してくれるコマンドラインとかあるといいのになぁ・・