前に、 grepで非ASCII文字だけを抽出(排除)する ということをやっていたけど、今回は置換してみる。
置換といえばまずは sed
になるのが、sed(GNU sed)でASCII文字以外を置換する場合、以下のようにする。
echo これはTESTなんだよ | sed 's/[^\d0-\d127]/xx/g'
$ echo これはTESTなんだよ | sed 's/[^\d0-\d127]/xx/g'
xxxxxxTESTxxxxxxxx
もちろん、その逆でASCII文字だけを置換することも可能。
echo これはTESTなんだよ | sed 's/[\d0-\d127]/X/g'
$ echo これはTESTなんだよ | sed 's/[\d0-\d127]/X/g'
これはXXXXなんだよ
ちなみに、perlを使う場合だともうちょっと楽に指定ができる。
echo "これはTESTなんだよ" | perl -pe 's/[^[:ascii:]]/x/g'
echo "これはTESTなんだよ" | perl -pe 's/[[:ascii:]]/x/g'
$ echo "これはTESTなんだよ" | perl -pe 's/[^[:ascii:]]/x/g'
xxxxxxxxxTESTxxxxxxxxxxxx
$ echo "これはTESTなんだよ" | perl -pe 's/[[:ascii:]]/x/g'
これはxxxxなんだよx
余り使う機会はなさそうだけど、ASCII文字だけのテストデータを作りたいとか、そういうときに使えるかも。