コンソール上で全角文字⇔半角文字の変換を行う事が時たまあるのだけど、どんな方法があるかなと思ったのでちょっと調べてみた。
nkfを使う(全角→半角のみ)
nkf -Z
を用いることで、全角数字→半角数字への変換が可能だ。
ただ、残念ながら半角→全角はできないようだ。
nkf -Z # 全角→半角
blacknon@BS-PUB-DEVELOP:~$ echo Abcd0123456789 | nkf -Z
Abcd0123456789
uconvを使う
個人的にお気に入りのツールにuconv
というツールがあるのだが、これを使うことでも半角→全角、全角→半角変換が可能だ。
uconv -x Fullwidth-Halfwidth #全角→半角
uconv -x Halfwidth-Fullwidth #半角→全角
blacknon@BS-PUB-DEVELOP:~$ echo Abcd0123456789 | uconv -x Fullwidth-Halfwidth #全角→半角
Abcd0123456789
blacknon@BS-PUB-DEVELOP:~$ echo Abcd0123456789 | uconv -x Halfwidth-Fullwidth #半角→全角
Abcd0123456789
sedを用いる
なんやかんやnkfやuconvが入ってない場合も多いと思う。
その場合は、やはりsedでやってしまうのがいいだろう。sedでは、「y/123/xyz/
」といった感じで一文字づつ置換することが可能なので、ちょっと長いけど以下のようにコマンドを実行すれば変換が可能だ。
echo Abcd0123456789|sed 'y/abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789/abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789/' #半角→全角
echo Abcd0123456789|sed 'y/abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789/abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789/' #全角→半角
blacknon@BS-PUB-DEVELOP:~$ echo Abcd0123456789|sed 'y/abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789/abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789/' #半角→全角
Abcd0123456789
blacknon@BS-PUB-DEVELOP:~$ echo Abcd0123456789|sed 'y/abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789/abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789/' #全角→半角
Abcd0123456789