Linux シェル,指定した文字以外を置換する

スポンサーリンク

鍛錬 143

Linux シェルスクリプト,指定した文字以外を置換する

Linux で、指定した文字以外を置換する方法についてです。置換するには、tr -c を使用します。
 
使用方法は、以下の通りです。

tr -c 置換しない文字 置換後の文字

 
シェルスクリプト

今回操作する文字列は、以下に示す通りです。

ABCDEFG123456789+-*/=,.;:abcdefg

 
以下に示す、様々なパターンを想定したシェルスクリプトは、指定した文字以外を x に置換しています。
 

  • B 以外を x に置換
#!/bin/sh

str="ABCDEFG123456789+-*/=,.;:abcdefg"

echo "操作前 $str"
tmp=$(echo -n $str | tr -c B x)
echo "操作後 $tmp"
***@ubuntu:~/***/test/shell$ ./sample.sh
操作前 ABCDEFG123456789+-*/=,.;:abcdefg
操作後 xBxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

 

  • C と E 以外を x に置換
#!/bin/sh

str="ABCDEFG123456789+-*/=,.;:abcdefg"

echo "操作前 $str"
tmp=$(echo -n $str | tr -c CE x)
echo "操作後 $tmp"
***@ubuntu:~/***/test/shell$ ./string.sh
操作前 ABCDEFG123456789+-*/=,.;:abcdefg
操作後 xxCxExxxxxxxxxxxxxxxxxxxxxxxxxxx

 

  • B ~ F 以外を x に置換
#!/bin/sh

str="ABCDEFG123456789+-*/=,.;:abcdefg"

echo "操作前 $str"
tmp=$(echo -n $str | tr -c [B-F] x)
echo "操作後 $tmp"
***@ubuntu:~/***/test/shell$ ./string.sh
操作前 ABCDEFG123456789+-*/=,.;:abcdefg
操作後 xBCDEFxxxxxxxxxxxxxxxxxxxxxxxxxx

 

  • 文字(アルファベット)以外を x に置換
#!/bin/sh

str="ABCDEFG123456789+-*/=,.;:abcdefg"

echo "操作前 $str"
tmp=$(echo -n $str | tr -c '[:alpha:]' x)
echo "操作後 $tmp"
***@ubuntu:~/***/test/shell$ ./string.sh
操作前 ABCDEFG123456789+-*/=,.;:abcdefg
操作後 ABCDEFGxxxxxxxxxxxxxxxxxxabcdefg

 

  • 数値以外を x に置換
#!/bin/sh

str="ABCDEFG123456789+-*/=,.;:abcdefg"

echo "操作前 $str"
tmp=$(echo -n $str | tr -c '[:digit:]' x)
echo "操作後 $tmp"
***@ubuntu:~/***/test/shell$ ./string.sh
操作前 ABCDEFG123456789+-*/=,.;:abcdefg
操作後 xxxxxxx123456789xxxxxxxxxxxxxxxx

 

  • 文字(アルファベット)と数値以外を x に置換
#!/bin/sh

str="ABCDEFG123456789+-*/=,.;:abcdefg"

echo "操作前 $str"
tmp=$(echo -n $str | tr -c '[:alnum:]' x)
echo "操作後 $tmp"
***@ubuntu:~/***/test/shell$ ./string.sh
操作前 ABCDEFG123456789+-*/=,.;:abcdefg
操作後 ABCDEFG123456789xxxxxxxxxabcdefg

 

  • 小文字以外を x に置換
#!/bin/sh

str="ABCDEFG123456789+-*/=,.;:abcdefg"

echo "操作前 $str"
tmp=$(echo -n $str | tr -c '[:lower:]' x)
echo "操作後 $tmp"
***@ubuntu:~/***/test/shell$ ./string.sh
操作前 ABCDEFG123456789+-*/=,.;:abcdefg
操作後 xxxxxxxxxxxxxxxxxxxxxxxxxabcdefg

 

  • 大文字以外を x に置換
#!/bin/sh

str="ABCDEFG123456789+-*/=,.;:abcdefg"

echo "操作前 $str"
tmp=$(echo -n $str | tr -c '[:upper:]' x)
echo "操作後 $tmp"
***@ubuntu:~/***/test/shell$ ./string.sh
操作前 ABCDEFG123456789+-*/=,.;:abcdefg
操作後 ABCDEFGxxxxxxxxxxxxxxxxxxxxxxxxx
タイトルとURLをコピーしました