Home
726 words
4 minutes
【Unix】trコマンドの解説
2025-02-22

最終更新: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コマンドを使用してみるハンズオンである。

  1. 小文字を大文字に置換する

    echo "hello world" | tr 'a-z' 'A-Z'
    

    このコマンドは、hello worldという文字列を大文字に変換して表示する。

  2. 特定の文字を削除する

    echo "hello world" | tr -d 'aeiou'
    

    このコマンドは、hello worldという文字列から母音を削除して表示する。

  3. 重複するスペースを圧縮する

    echo "hello    world" | tr -s ' '
    

    このコマンドは、hello worldという文字列の重複するスペースを1つに圧縮して表示する。

  4. ファイルの内容を変換する

    cat example.txt | tr 'a-z' 'A-Z'
    

    このコマンドは、example.txtファイルの内容を大文字に変換して表示する。

  5. 複数の変換を組み合わせる

    echo "hello world 123" | tr -d 'a-z' | tr -s ' '
    

    このコマンドは、hello world 123という文字列から小文字を削除し、その後重複するスペースを圧縮して表示する。

補足#

 trコマンドは文字列の変換には使えない。例えば、badbaの文字列をgooに変換することを考える。所望の結果はgoodである。

echo apple | tr pl goo

試しに上で示したコマンドを実行すると、結果はgodとなり、全く別の結果が得られた。つまり、文字列の変換には別のコマンドを使用する必要がある。 →文字列の変換が行える代表的なコマンドの1つにsedがある。

【Unix】trコマンドの解説
https://ss0832.github.io/posts/20250222_tr_command_explanation/
Author
ss0832
Published at
2025-02-22