コンソール上で全角文字⇔半角文字の変換を行う事が時たまあるのだけど、どんな方法があるかなと思ったのでちょっと調べてみた。

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