このページで解説している内容は、以下の 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
...(以下省略)...

解説

  • aA に変換
  • bB に変換
  • cC に変換
  • dD に変換
  • eE に変換

ポイント

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 コマンドを活用することで、テキストデータの整形や加工を効率的に行うことができます。特に、ログファイルの解析やデータの前処理など、多くの場面で役立ちますので、ぜひ習得しておきましょう。