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

スポンサーリンク

鍛錬 140

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

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

tr 置換する文字 置換後の文字

 
シェルスクリプト

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

ABCDEFG123456789+-*/=,.;:abcdefg

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

  • B を ? に置換
#!/bin/sh

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

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

 

  • C と E を ? に置換
#!/bin/sh

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

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

 

  • B ~ F の範囲で文字が存在する場合 ? に置換
#!/bin/sh

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

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

 

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

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

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

 

  • 数値を ? に置換
#!/bin/sh

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

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

 

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

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

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

 

  • 小文字を ? に置換
#!/bin/sh

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

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

 

  • 大文字を ? に置換
#!/bin/sh

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

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