trコマンドで文字を変換・削除する方法をわかりやすく解説

Linuxのコマンドライン操作では、テキストの加工が必要になる場面がよくあります。そんな時に便利なのが「trコマンド」です。trは、「translate(変換)」や「delete(削除)」の頭文字を取ったシンプルなコマンドで、文字の置き換えや削除を行うことができます。sedやawkほど複雑ではなく、簡単な文字操作を手軽に済ませたいときに重宝されるコマンドです。本記事では、trコマンドの基本的な使い方から実用的な例まで、初心者にもわかりやすく解説します。


trコマンドとは?

trは「translate characters」の略で、標準入力から受け取った文字を、指定されたルールに従って変換または削除するためのコマンドです。基本的にはファイルを直接扱うのではなく、標準入力からのデータに対して動作します。

例えば、以下のような操作が可能です。

  • 小文字を大文字に変換する
  • 特定の文字を削除する
  • 改行コードや空白を変換する

他のコマンドと組み合わせて使うことで、テキスト処理をより効率的に行えます。


基本構文とオプション

trコマンドの基本的な構文は以下の通りです。

tr [OPTION]... SET1 [SET2]
  • SET1: 変換または削除の対象となる文字セット
  • SET2: SET1を変換する先の文字セット(省略時は削除動作)

よく使うオプションは次のとおりです:

オプション意味
-d指定した文字を削除する
-s重複する文字を1つに圧縮する
-c指定した文字セットを補集合として扱う(つまり「それ以外」)

trで文字を変換する

小文字を大文字に変換

アルファベットの小文字を大文字に変換するには以下のようにします。

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

出力:

nginxコピーする編集するHELLO WORLD

大文字を小文字に変換

その逆も可能です。

echo "HELLO WORLD" | tr 'A-Z' 'a-z'

出力:

hello world

特定の文字を他の文字に置き換える

例えば、1に、2に置き換えたい場合:

echo "123" | tr '12' '一二'

出力:

一二3

trで文字を削除する

特定の文字を削除する

例えば、空白や改行を削除したい場合:

echo "a b c" | tr -d ' '

出力:

nginxコピーする編集するabc

改行を削除するには:

echo -e "line1\nline2" | tr -d '\n'

出力:

line1line2

数字だけを削除する

echo "abc123xyz" | tr -d '0-9'

出力:

abcxyz

trで連続した文字を1つに圧縮する

連続する同じ文字を1文字にまとめたい場合に使うのが -s オプションです。

echo "aa    bbb   cc" | tr -s ' '

出力:

aa bbb cc

複数の改行を1つにまとめたい場合にも有効です:

echo -e "line1\n\n\nline2" | tr -s '\n'

出力:

line1
line2

trで「それ以外」を指定する

-c オプションを使うと、指定した文字「以外」を対象にできます。

たとえば、英字以外を削除するには:

echo "abc123DEF!@#" | tr -cd 'a-zA-Z'

出力:

abcDEF

trと他コマンドの組み合わせ活用

trは単体でも便利ですが、catgrepcutsortなど他のコマンドと組み合わせることで、さらに強力になります。

ファイルの中身を大文字に変換する

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

テキストから英字のみ抽出

echo "abc123xyz" | tr -cd 'a-zA-Z'

出力:

abcxyz

重複改行を削除

cat file.txt | tr -s '\n'

注意点と制限

  • tr文字単位でしか操作できないため、「文字列全体の置換」はできません(例:abcxyz のような文字列単位の変換にはsedを使用)。
  • tr正規表現を扱えません。正規表現による高度な変換はsedawkを使う必要があります。
  • 操作対象はファイルではなく標準入力なので、ファイルに使う場合はcatなどと組み合わせます。

まとめ

trコマンドは、Linuxのテキスト処理において非常にシンプルかつ便利なツールです。文字の変換や削除、圧縮といった操作を一行で手軽に実行できるため、スクリプトの中でも多用されます。特に、正規表現までは必要ないけれど、ちょっとした文字の置き換えやクリーニングを行いたい時に役立ちます。

コマンドラインでテキストを扱う機会が多い方は、ぜひtrを使いこなして、作業効率をアップさせましょう。

タイトルとURLをコピーしました