最終更新:2025-02-22
tr
コマンドは、Unix系オペレーティングシステムにおいて、文字の変換や削除を行うためのコマンドである。特定の文字を別の文字に置換したり、特定の文字を削除したりすることができる。簡単なテキスト処理に便利である。
基本的な使い方
基本的なtr
コマンドの使い方は以下の通りである。
tr [オプション] セット1 セット2
セット1の文字をセット2の文字に置換する。セット1とセット2の長さが異なる場合、不足している部分は最後の文字で埋められる。
主なオプション
文字の置換
セット1の文字をセット2の文字に置換する。例えば、小文字を大文字に置換するには以下のようにする。
tr 'a-z' 'A-Z'
文字の削除
-d
オプションを使用すると、セット1で指定した文字を削除することができる。
tr -d 'a-z'
重複する文字の圧縮
-s
オプションを使用すると、セット1で指定した重複する文字を1つに圧縮する。
tr -s ' '
コマンドの入力と出力
tr
コマンドは標準入力から入力を受け取り、標準出力に結果を出力する。ファイルを入力として使用する場合には、リダイレクトやパイプを使用する。
cat filename.txt | tr 'a-z' 'A-Z'
ハンズオン
以下は、実際にtr
コマンドを使用してみるハンズオンである。
小文字を大文字に置換する
echo "hello world" | tr 'a-z' 'A-Z'
このコマンドは、
hello world
という文字列を大文字に変換して表示する。特定の文字を削除する
echo "hello world" | tr -d 'aeiou'
このコマンドは、
hello world
という文字列から母音を削除して表示する。重複するスペースを圧縮する
echo "hello world" | tr -s ' '
このコマンドは、
hello world
という文字列の重複するスペースを1つに圧縮して表示する。ファイルの内容を変換する
cat example.txt | tr 'a-z' 'A-Z'
このコマンドは、
example.txt
ファイルの内容を大文字に変換して表示する。複数の変換を組み合わせる
echo "hello world 123" | tr -d 'a-z' | tr -s ' '
このコマンドは、
hello world 123
という文字列から小文字を削除し、その後重複するスペースを圧縮して表示する。
補足
tr
コマンドは文字列の変換には使えない。例えば、bad
のba
の文字列をgoo
に変換することを考える。所望の結果はgood
である。
echo apple | tr pl goo
試しに上で示したコマンドを実行すると、結果はgod
となり、全く別の結果が得られた。つまり、文字列の変換には別のコマンドを使用する必要がある。 →文字列の変換が行える代表的なコマンドの1つにsed
がある。