Linux シェル,指定した文字が連続した場合、1文字に変換する

スポンサーリンク

鍛錬 130

Linux シェルスクリプト,指定した文字が連続した場合、1文字に変換する

指定した文字が連続した場合に、連続した文字を1文字に変換する(置換する)には、tr を使用します。
 
使用方法は、以下に示す通りです。

tr -s 指定する文字

オプション

以下は、上記のオプションについてです。

オプション 機能
-s 指定した文字の繰り返しを、1文字に置き換える
スポンサーリンク

実行結果

以下は、様々なパターンの繰り返し文字を、1文字に置き換えています。

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

今回操作する文字列
ABCCCCCDE123333345+-*****/=,.;:abcddddde

C が連続する場合、1文字に変換

#!/bin/sh

str="ABCCCCCDE123333345+-*****/=,.;:abcddddde"

echo "操作前 $str"
tmp=$(echo -n $str | tr -s C)
echo "操作後 $tmp"
***@ubuntu:~/***/test/shell$ 
***@ubuntu:~/***/test/shell$ ./replace.sh
操作前 ABCCCCCDE123333345+-*****/=,.;:abcddddde
操作後 ABCDE123333345+-*****/=,.;:abcddddde

C と d が連続する場合、1文字に変換

#!/bin/sh

str="ABCCCCCDE123333345+-*****/=,.;:abcddddde"

echo "操作前 $str"
tmp=$(echo -n $str | tr -s Cd)
echo "操作後 $tmp"
***@ubuntu:~/***/test/shell$ 
***@ubuntu:~/***/test/shell$ ./replace.sh
操作前 ABCCCCCDE123333345+-*****/=,.;:abcddddde
操作後 ABCDE123333345+-*****/=,.;:abcde

B ~ F の範囲で文字が連続する場合、1文字に変換

#!/bin/sh

str="ABCCCCCDE123333345+-*****/=,.;:abcddddde"

echo "操作前 $str"
tmp=$(echo -n $str | tr -s [B-F])
echo "操作後 $tmp"
***@ubuntu:~/***/test/shell$ 
***@ubuntu:~/***/test/shell$ ./replace.sh
操作前 ABCCCCCDE123333345+-*****/=,.;:abcddddde
操作後 ABCDE123333345+-*****/=,.;:abcddddde

文字(アルファベット)が連続する場合、1文字に変換

#!/bin/sh

str="ABCCCCCDE123333345+-*****/=,.;:abcddddde"

echo "操作前 $str"
tmp=$(echo -n $str | tr -s '[:alpha:]')
echo "操作後 $tmp"
***@ubuntu:~/***/test/shell$ 
***@ubuntu:~/***/test/shell$ ./replace.sh
操作前 ABCCCCCDE123333345+-*****/=,.;:abcddddde
操作後 ABCDE123333345+-*****/=,.;:abcde

数値が連続する場合、1文字に変換

#!/bin/sh

str="ABCCCCCDE123333345+-*****/=,.;:abcddddde"

echo "操作前 $str"
tmp=$(echo -n $str | tr -s '[:digit:]')
echo "操作後 $tmp"
***@ubuntu:~/***/test/shell$ 
***@ubuntu:~/***/test/shell$ ./replace.sh
操作前 ABCCCCCDE123333345+-*****/=,.;:abcddddde
操作後 ABCCCCCDE12345+-*****/=,.;:abcddddde

文字(アルファベット)と数値が連続する場合、1文字に変換

#!/bin/sh

str="ABCCCCCDE123333345+-*****/=,.;:abcddddde"

echo "操作前 $str"
tmp=$(echo -n $str | tr -s '[:alnum:]')
echo "操作後 $tmp"
***@ubuntu:~/***/test/shell$ 
***@ubuntu:~/***/test/shell$ ./replace.sh
操作前 ABCCCCCDE123333345+-*****/=,.;:abcddddde
操作後 ABCDE12345+-*****/=,.;:abcde

小文字(アルファベット)が連続する場合、1文字に変換

#!/bin/sh

str="ABCCCCCDE123333345+-*****/=,.;:abcddddde"

echo "操作前 $str"
tmp=$(echo -n $str | tr -s '[:lower:]')
echo "操作後 $tmp"
***@ubuntu:~/***/test/shell$ 
***@ubuntu:~/***/test/shell$ ./replace.sh
操作前 ABCCCCCDE123333345+-*****/=,.;:abcddddde
操作後 ABCCCCCDE123333345+-*****/=,.;:abcde

大文字(アルファベット)が連続する場合、1文字に変換

#!/bin/sh

str="ABCCCCCDE123333345+-*****/=,.;:abcddddde"

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