カタカナをアルファベットに変換

次のルールでカタカナをアルファベットに変換
カタカナの「ニ」と漢字の「二」の
違いに注意。

katakana.kana

ア,_a
イ,_i
ウ,_u
エ,_e
オ,_o
カ,ka
キ,ki
ク,ku
ケ,ke
コ,ko
サ,sa
シ,si
ス,su
セ,se
ソ,so
タ,ta
チ,ti
ツ,tu
テ,te
ト,to
ナ,na
ニ,ni
ヌ,nu
ネ,ne
ノ,no
ハ,ha
ヒ,hi
フ,hu
へ,he
ホ,ho
マ,ma
ミ,mi
ム,mu
メ,me
モ,mo
ヤ,ya
ユ,yu
ヨ,yo
ラ,ra
リ,ri
ル,ru
レ,re
ロ,ro
ワ,wa
ヲ,wo
ン,nn
ァ,la
ィ,li
ゥ,lu
ェ,le
ォ,lo
ガ,ga
ギ,gi
グ,gu
ゲ,ge
ゴ,go
ザ,za
ジ,zi
ズ,zu
ゼ,ze
ゾ,zo
ダ,da
ヂ,di
ヅ,du
デ,de
ド,do
バ,ba
ビ,bi
ブ,bu
ベ,be
ボ,bo
パ,pa
ピ,pi
プ,pu
ぺ,pe
ポ,po
ャ,lya
ュ,lyu
ョ,lyo
ヮ,lwa
ッ,ltu
ヴ,va
ヵ,lka
ヶ,lke

sedの場合sjisダメ文字の影響でうまくいかないい場合は、以下のrubyをつかう。

上のファイルから置き換えスクリプトを作る
awk

awk -F, 'BEGIN{print "sed \""}{print "s\/"$1"\/"$2"/g"";"}END{print "\""}' ka
takana.kana > kana.sed

sedsjisダメ文字の影響でうまくいかない場合は、以下のrubyをつかう。
ruby -KSとして実行すのがポイント。

例えば
ruby -KS katakanatoalpha.rb

!#/bin/ruby -KS
a=File.open(ARGV[0]);a.each{|str|
str=str.gsub(//,"_a")
str=str.gsub(//,"_i")
str=str.gsub(//,"_u")
str=str.gsub(//,"_e")
str=str.gsub(//,"_o")
str=str.gsub(//,"ka")
str=str.gsub(//,"ki")
str=str.gsub(//,"ku")
str=str.gsub(//,"ke")
str=str.gsub(//,"ko")
str=str.gsub(//,"sa")
str=str.gsub(//,"si")
str=str.gsub(//,"su")
str=str.gsub(//,"se")
str=str.gsub(//,"so")
str=str.gsub(//,"ta")
str=str.gsub(//,"ti")
str=str.gsub(//,"tu")
str=str.gsub(//,"te")
str=str.gsub(//,"to")
str=str.gsub(//,"na")
str=str.gsub(//,"ni")
str=str.gsub(//,"nu")
str=str.gsub(//,"ne")
str=str.gsub(//,"no")
str=str.gsub(//,"ha")
str=str.gsub(//,"hi")
str=str.gsub(//,"hu")
str=str.gsub(//,"he")
str=str.gsub(//,"ho")
str=str.gsub(//,"ma")
str=str.gsub(//,"mi")
str=str.gsub(//,"mu")
str=str.gsub(//,"me")
str=str.gsub(//,"mo")
str=str.gsub(//,"ya")
str=str.gsub(//,"yu")
str=str.gsub(//,"yo")
str=str.gsub(//,"ra")
str=str.gsub(//,"ri")
str=str.gsub(//,"ru")
str=str.gsub(//,"re")
str=str.gsub(//,"ro")
str=str.gsub(//,"wa")
str=str.gsub(//,"wo")
str=str.gsub(//,"nn")
str=str.gsub(//,"la")
str=str.gsub(//,"li")
str=str.gsub(//,"lu")
str=str.gsub(//,"le")
str=str.gsub(//,"lo")
str=str.gsub(//,"ga")
str=str.gsub(//,"gi")
str=str.gsub(//,"gu")
str=str.gsub(//,"ge")
str=str.gsub(//,"go")
str=str.gsub(//,"za")
str=str.gsub(//,"zi")
str=str.gsub(//,"zu")
str=str.gsub(//,"ze")
str=str.gsub(//,"zo")
str=str.gsub(//,"da")
str=str.gsub(//,"di")
str=str.gsub(//,"du")
str=str.gsub(//,"de")
str=str.gsub(//,"do")
str=str.gsub(//,"ba")
str=str.gsub(//,"bi")
str=str.gsub(//,"bu")
str=str.gsub(//,"be")
str=str.gsub(//,"bo")
str=str.gsub(//,"pa")
str=str.gsub(//,"pi")
str=str.gsub(//,"pu")
str=str.gsub(//,"pe")
str=str.gsub(//,"po")
str=str.gsub(//,"lya")
str=str.gsub(//,"lyu")
str=str.gsub(//,"lyo")
str=str.gsub(//,"lwa")
str=str.gsub(//,"ltu")
str=str.gsub(//,"va")
str=str.gsub(//,"lka")
str=str.gsub(//,"lke")
puts str}

rubyスクリプトを書くためのsed

$ awk -F, 'BEGIN{print "a=File.open(ARGV[0]);a.each{|str|"}{print "str=str.gsub
(\/"$1"\/,\""$2"\")"}END{print "puts str}"}' katakana.kana > katakana.rb

上のファイルから置き換えスクリプトを作る
awk

awk -F, 'BEGIN{print "sed \""}{print "s\/"$1"\/"$2"/g"";"}END{print "\""}' ka
takana.kana > kana.sed


sedの場合。
rubyスクリプトを書くためのsed

$ awk -F, 'BEGIN{print "a=File.open(ARGV[0]);a.each{|str|"}{print "str=str.gsub
(\/"$1"\/,\""$2"\")"}END{print "puts str}"}' katakana.kana > katakana.rb

ひらがな

!#/bin/ruby -KS
a=File.open(ARGV[0]);a.each{|str|
str=str.gsub(//,"_a")
str=str.gsub(//,"_i")
str=str.gsub(//,"_u")
str=str.gsub(//,"_e")
str=str.gsub(//,"_o")
str=str.gsub(//,"ka")
str=str.gsub(//,"ki")
str=str.gsub(//,"ku")
str=str.gsub(//,"ke")
str=str.gsub(//,"ko")
str=str.gsub(//,"sa")
str=str.gsub(//,"si")
str=str.gsub(//,"su")
str=str.gsub(//,"se")
str=str.gsub(//,"so")
str=str.gsub(//,"ta")
str=str.gsub(//,"ti")
str=str.gsub(//,"tu")
str=str.gsub(//,"te")
str=str.gsub(//,"to")
str=str.gsub(//,"na")
str=str.gsub(//,"ni")
str=str.gsub(//,"nu")
str=str.gsub(//,"ne")
str=str.gsub(//,"no")
str=str.gsub(//,"ha")
str=str.gsub(//,"hi")
str=str.gsub(//,"hu")
str=str.gsub(//,"he")
str=str.gsub(//,"ho")
str=str.gsub(//,"ma")
str=str.gsub(//,"mi")
str=str.gsub(//,"mu")
str=str.gsub(//,"me")
str=str.gsub(//,"mo")
str=str.gsub(//,"ya")
str=str.gsub(//,"yu")
str=str.gsub(//,"yo")
str=str.gsub(//,"ra")
str=str.gsub(//,"ri")
str=str.gsub(//,"ru")
str=str.gsub(//,"re")
str=str.gsub(//,"ro")
str=str.gsub(//,"wa")
str=str.gsub(//,"wo")
str=str.gsub(//,"nn")
str=str.gsub(//,"la")
str=str.gsub(//,"li")
str=str.gsub(//,"lu")
str=str.gsub(//,"le")
str=str.gsub(//,"lo")
str=str.gsub(//,"ga")
str=str.gsub(//,"gi")
str=str.gsub(//,"gu")
str=str.gsub(//,"ge")
str=str.gsub(//,"go")
str=str.gsub(//,"za")
str=str.gsub(//,"zi")
str=str.gsub(//,"zu")
str=str.gsub(//,"ze")
str=str.gsub(//,"zo")
str=str.gsub(//,"da")
str=str.gsub(//,"di")
str=str.gsub(//,"du")
str=str.gsub(//,"de")
str=str.gsub(//,"do")
str=str.gsub(//,"ba")
str=str.gsub(//,"bi")
str=str.gsub(//,"bu")
str=str.gsub(//,"be")
str=str.gsub(//,"bo")
str=str.gsub(//,"pa")
str=str.gsub(//,"pi")
str=str.gsub(//,"pu")
str=str.gsub(//,"pe")
str=str.gsub(//,"po")
str=str.gsub(//,"lya")
str=str.gsub(//,"lyu")
str=str.gsub(//,"lyo")
str=str.gsub(//,"lwa")
str=str.gsub(//,"ltu")
str=str.gsub(//,"va")
str=str.gsub(//,"lka")
str=str.gsub(//,"lke")
str=str.gsub(//,"-")
puts str}