先日、ふとローマ字入力からひらがな/カタカナへの変換をコマンドでできないかなーと思って調べてたところ、どうもuconvなるコマンドであればそれができそうだったので試してみることにした。 以下のコマンドで、CentOSやUbuntu、Macにインストールができる。

sudo apt-get install icu-devtools
sudo yum install icu
brew install icu4c # 別途pathを通す必要あり?

uconvコマンドでは、「-x 文字種別」でその文字列に変換する事ができる。 たとえば、以下のようにコマンドを実行してみる。

echo aiueo | uconv -x hiragana
echo k{a,i,u,e,o} | tr -d ' ' | uconv -x katakana
blacknon@BS-PUB-UBUNTU-01:~$ echo aiueo | uconv -x hiragana
あいうえお
blacknon@BS-PUB-UBUNTU-01:~$ echo k{a,i,u,e,o} | tr -d ' ' | uconv -x katakana
カキクケコ

このように、ローマ字からひらがなやカタカナに変換ができる。 もちろん逆も可能。「変換したい文字種別-変換後の文字種別」としてやれば、その文字だけを変換することもできる。

blacknon@BS-PUB-UBUNTU-01:~$ echo -e "あいうえお\nカキクケコ" | uconv -x latin
aiueo
kakikukeko
blacknon@BS-PUB-UBUNTU-01:~$ echo -e "あいうえお\nカキクケコ" | uconv -x hiragana-latin
aiueo
カキクケコ
blacknon@BS-PUB-UBUNTU-01:~$ echo -e "あいうえお\nカキクケコ" | uconv -x katakana-latin
あいうえお
kakikukeko

ちなみにローマ字入力は厳密である必要があるらしく、たとえば「し」は「shi」、「つ」は「chi」と入力しないといけないようだ。

blacknon@BS-PUB-UBUNTU-01:~$ echo {,k,{s,sh},{t,ts},n,h,m,y,r,w}{a,i,u,e,o} | xargs -n5 | uconv
 -x hiragana
あ い う え お
か き く け こ
さ せぃ す せ そ
しゃ し しゅ しぇ しょ
た てぃ てぅ て と
てさ てせぃ つ てせ てそ
な に ぬ ね の
は ひ へぅ へ ほ
ま み む め も
や い ゆ え よ
ら り る れ ろ
わ ゐ う ゑ を

この他、文字列の置換や文字コードの変換、文字種別の確認も可能なようで、機能が豊富に盛り込まれている。 ケースに応じて対応する方法もあるらしい。

blacknon@BS-PUB-UBUNTU-01:~$ echo aiueo
aiueo
blacknon@BS-PUB-UBUNTU-01:~$ echo aiueo | uconv -x 'a>x;o>X'
xiueX
blacknon@BS-PUB-UBUNTU-01:~$ echo aiueo | uconv -x 'upper()'
AIUEO
blacknon@BS-PUB-UBUNTU-01:~$ echo aiueo | uconv -x '(.)(.) > &upper($1)$2'
AiUeo

kakasiとかmecabとかと組み合わせれば色々と使いみちがありそうだし、とても面白い。


参考