シェル・スクリプト・リファンレス
コマンド集(機能別) | コマンド集(アルファベット順) | コマンド逆引き大全 | シェル・スクリプト・リファンレス

 文字を変換する「tr」

 大文字を小文字に変換するなど,各文字を変換したい場合にはtrを利用する。trは以下のように記述する。


echo $変数 | tr 変換対象の文字 変換文字

 変換対象の文字に当てはまる文字を発見したとき,それに変換文字に変換する。たとえば,「L」を「l」に変換するなら,


$ string="Linux" 
$ echo $string | tr "L" "l" 
linux

とする。また,複数の文字を扱える。たとえば,「L」を「l」,「n」を「N」,「x」を「X」に変換したい場合は,


$ string="Linux" 
$ echo $string | tr "Lnx" "lNX" 
liNuX

と入力する。変換対象の文字の1文字目が変換文字の1文字目に変更され,以降2文字目,3文字目に対応する。

 また,「文字-文字」のように範囲で指定することも可能だ。たとえば,大文字を小文字に変更したい場合は,


$ string="LINUX" 
$ echo $string | tr "A-Z" "a-z" 
linux

とする。

 変換対象の文字や変換文字にはエスケープ・シーケンスや表に示した文字クラスが利用できる。


文字クラス 意味
[:alnum:] アルファベットと数字
[:alpha:] アルファベット
[:blank:] スペースや水平タブ
[:cntrl:] コントロール文字
[:digit:] 数字
[:graph:] スペースを含まない表示可能な文字
[:lower:] 小文字アルファベット
[:print:] スペースを含む表示可能な文字
[:punct:] 句読点
[:space:] スペースや水平タブ,垂直タブ
[:upper:] 大文字アルファベット
[:xdigit:] 16進数文字

 文字クラスを利用すると,大文字を小文字に変換するには,


$ string="LINUX" 
$ echo $string | tr "[:upper:]" "[:lower:]" 
linux

のように記述できる。