このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
Linuxコマンドの基本:文字を変換・削除する:trコマンド

文字を変換・削除する:trコマンド
テキスト処理は、Linuxシステムにおける日常的な作業の一つです。特に、テキスト内の特定の文字を別の文字に置き換えたり、不要な文字を削除したりすることは、データの整形やログの解析などで頻繁に行われます。tr
コマンドは、そのような文字の変換や削除を行うための強力なツールです。ここでは、tr
コマンドの使い方や主なオプション、具体的な使用例について詳しく解説します。

tr
コマンドの概要
tr
(translateの略)コマンドは、文字単位でテキストデータの変換や削除を行うためのコマンドです。主に標準入力からデータを受け取り、指定した変換規則に従って処理を行い、その結果を標準出力に出力します。
【書式】tr [オプション] <置換前の文字セット> [置換後の文字セット]
<置換前の文字セット>
:変換対象となる文字のセットを指定します。[置換後の文字セット]
:変換後の文字のセットを指定します。
主なオプションと説明
オプション | 説明 |
---|---|
-d | 指定した文字を削除する。 |
-s | 連続する同一文字を1文字にまとめる。 |
-c | 指定した文字以外を対象に処理を行う。 |
注意
tr
コマンドはファイル名を直接指定できません。標準入力からデータを受け取るため、ファイルを処理する場合はパイプ |
やリダイレクト <
を使用します。
tr
コマンドの使用例
例1:区切り文字の置換
/etc/passwd
ファイルの区切り文字「:
」を「,
」に置き換えて、カンマ区切りの形式に変換します。
例:元の /etc/passwd
の内容
user01@ubuntu:~$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
...(以下省略)...
コマンド
user01@ubuntu:~$ cat /etc/passwd | tr : ,
出力結果
root,x,0,0,root,/root,/bin/bash
daemon,x,1,1,daemon,/usr/sbin,/usr/sbin/nologin
bin,x,2,2,bin,/bin,/usr/sbin/nologin
...(以下省略)...
解説
区切り文字「:
」を「,
」に置換することで、CSV形式のデータに変換できます。
例2:複数の文字を同時に置換
複数の文字を一度に別の文字に置き換えることができます。
コマンド
user01@ubuntu:~$ cat /etc/passwd | tr abcde ABCDE
出力結果
root:x:0:0:root:/root:/Bin/BAsh
dAEmon:x:1:1:dAEmon:/usr/sBin:/usr/sBin/nologin
Bin:x:2:2:Bin:/Bin:/usr/sBin/nologin
...(以下省略)...
解説
a
をA
に変換b
をB
に変換c
をC
に変換d
をD
に変換e
をE
に変換
ポイント
abcde
という文字列全体を ABCDE
に置換するのではなく、各文字を対応する文字に置換しています。
例3:文字範囲の指定による変換
文字範囲を指定して変換を行うことができます。-
(ハイフン)を使用して文字の範囲を表します。
小文字を大文字に変換する
user01@ubuntu:~$ cat /etc/passwd | tr a-z A-Z
出力結果
ROOT:X:0:0:ROOT:/ROOT:/BIN/BASH
DAEMON:X:1:1:DAEMON:/USR/SBIN:/USR/SBIN/NOLOGIN
BIN:X:2:2:BIN:/BIN:/USR/SBIN/NOLOGIN
...(以下省略)...
解説
a-z
はアルファベットの小文字全体、A-Z
は大文字全体を表します。これにより、小文字を大文字に一括で変換できます。
例4:文字の削除
-d
オプションを使用すると、指定した文字を削除することができます。
【書式】tr -d <削除する文字セット>
例:改行コードを削除して一行にまとめる
user01@ubuntu:~$ cat /etc/passwd | tr -d "\n"
出力結果
root:x:0:0:root:/root:/bin/bashdaemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologinbin:x:2:2:bin:/bin:/usr/sbin/nologin
...(以下省略)...
解説
改行コード \n(\n
)を削除することで、テキスト全体が一行にまとめられます。
ファイル指定の注意点
tr
コマンドは純粋なフィルタとして設計されており、直接ファイル名を指定して処理することができません。そのため、ファイルを処理する際には以下のようにします。
パイプを使用する
cat ファイル名 | tr 置換前 置換後
リダイレクトを使用する
tr 置換前 置換後 < ファイル名
例:ファイルを直接指定するとエラーになる
user01@ubuntu:~$ tr : , /etc/passwd
tr: extra operand '/etc/passwd'
Try 'tr --help' for more information.
解説
tr
コマンドにファイル名を直接指定すると、「余分な演算子」としてエラーが表示されます。
まとめ
tr
コマンドは、文字単位での変換や削除を行うための強力なツールです。- 主な用途
・文字の置換:特定の文字を別の文字に置き換える。
・文字の削除:特定の文字を削除する。 - 主なオプション
・-d
:指定した文字を削除する。
・-s
:連続する同一文字を一文字にまとめる。 - 注意点:
tr
コマンドはファイル名を直接指定できないため、パイプ|
やリダイレクト<
を使用してデータを入力する。 - 活用例
・区切り文字の変換によるデータ形式の変更。
・テキストの大文字・小文字の一括変換。
・不要な文字の削除によるデータクレンジング。
tr
コマンドを活用することで、テキストデータの整形や加工を効率的に行うことができます。特に、ログファイルの解析やデータの前処理など、多くの場面で役立ちますので、ぜひ習得しておきましょう。