Linuxのtrコマンドとは?基本構文・オプション・実用例を徹底解説
Linuxのtr(translate:変換)コマンドは、標準入力からテキストを読み込み、指定した変換処理を施した結果を標準出力へ送るシンプルながら強力なコマンドです。本記事では、trコマンドの基本的な使い方から、実際に役立つ活用例までをわかりやすく解説します。
trコマンドの基本構文
trコマンドを使用する際の基本構文は以下の通りです。
tr OPTIONS SET1 [SET2]
各要素の意味は次の通りです。
- OPTIONS:後述のオプション一覧から必要なものを指定します。
- SET1に含まれる文字は、SET2の対応する位置にある文字へ置き換えられます。
- SET1とSET2は必須ではありません。一部のOPTIONSは単独で変換処理を行えるため、両方のSETが常に必要というわけではありません。
- 処理対象のテキストはコマンドライン引数として渡すのではなく、標準リダイレクトやパイプを使って標準入力から供給します。詳細は後述の使用例をご覧ください。
主なオプション一覧
利用できる主なOPTIONSは以下の通りです(ユーザーマニュアルより抜粋)。
| オプション | 説明 |
|---|---|
| -c | SET1の補集合(SET1に含まれない文字すべて)を使用する |
| -d | SET1内の文字を削除する(置換は行わない) |
| -s | 最後に指定したSETに含まれる文字が連続して繰り返されている場合、1文字にまとめる |
| -t | まずSET1をSET2の長さに切り詰めてから処理する |
特殊文字の指定方法
改行やタブなどの特殊文字をSET内で扱いたい場合は、以下のエスケープシーケンスや文字クラスが利用できます。
| 記述方法 | 対象の特殊文字 |
|---|---|
| \NNN | 8進数NNN(1〜3桁)に対応する文字 |
| \\ | バックスラッシュ(\) |
| \b | バックスペース |
| \n | 改行(ニューライン) |
| \r | キャリッジリターン |
| \t | 水平タブ |
| [:alnum:] | すべての英数字 |
| [:alpha:] | すべての英字 |
| [:blank:] | すべての水平方向の空白文字 |
| [:digit:] | すべての数字 |
| [:lower:] | すべての小文字英字 |
| [:space:] | すべての水平・垂直方向の空白文字 |
| [:upper:] | すべての大文字英字 |
上記はよく使われるオプション・シーケンスの一例です(実際には他にも多数存在します)。コマンドの全オプションを確認したい場合は、以下のコマンドでユーザーマニュアルを参照できます。
man tr
trコマンドの実用例
ここからは、trコマンドの具体的な使い方をいくつか紹介します。これらはあくまで一例であり、オプションやシーケンスを組み合わせることで、さまざまな目的に合わせた処理を実現できます。
特定の文字を削除する
次の例では、文字列から指定した文字を削除します。echoコマンドの出力がパイプ(|)によってtrコマンドへ渡されています。
trコマンドは、パイプやリダイレクト経由で標準入力として渡されたテキストしか処理できません。この点がtrコマンド利用時の重要なポイントです。
echo "axbxcxdx" | tr -d 'x'
上記のコマンドでは、-dオプションにより、echoコマンドの出力から文字xが削除されます。
実行結果は以下の通りです。
abcd
小文字を大文字に変換する
次の例では、文字クラス[:lower:]と[:upper:]を組み合わせて、すべての小文字を大文字に変換しています。
echo "aBcDeFg" | tr '[:lower:]' '[:upper:]'
実行結果:
ABCDEFG
文字を別の文字に置き換える
trコマンドの最も一般的な用途は、文字列内の文字置き換えです。たとえば、空白をハイフンに置き換えるには次のようにします。
echo "frogs and fish" | tr '[:blank:]' '-'
実行結果:
frogs-and-fish
この例では2つのSETを使用しています。1つ目のSETには空白文字(スペースやタブなど)を表す識別子[:blank:]を、2つ目のSETにはハイフン「-」を指定しているため、空白がハイフンに置き換えられます(SET2がSET1を置き換える形です)。
Webサイトにアップロードするファイル名を生成する際など、ファイル名にスペースが含まれないようにしたい場合に特に便利なテクニックです。
複数の文字を一度に置き換える
前の例では各SETに1文字だけを指定しましたが、複数の文字を指定すれば、一度に複数の置き換えを行うことも可能です。
echo "frogs and fish" | tr 'sf' 'SF'
実行結果:
FrogS and FiSh
このように、1つ目のSET内の各文字が、2つ目のSET内の対応する位置の文字に置き換えられます。
繰り返し文字を圧縮する
次の例では、テキスト内の不要な連続した空白を1つにまとめています。
echo 'Absolutely spaced out' | tr -s '[:space:]'
実行結果:
Absolutely spaced out
ここでは-sオプションと[:space:]識別子を組み合わせることで、繰り返される空白文字を検出し、1文字に圧縮しています。ログファイルの整形やテキストデータのクリーニングなど、日常的なテキスト処理で非常に役立つテクニックです。
-
Linuxのteeコマンド使い方ガイド|画面表示とファイル保存を同時に実現
Linuxシェルでパイプやリダイレクトを使っているなら、teeコマンドの出番もきっとあるはずです。teeは「標準出力に表示しながら、同時にファイルにも書き込む」ことができる便利なユーティリティです。この記事では、teeコマンドの基本操作から、sudoとの組み合わせ、追記モード、エラー出力の扱い方まで、実例を交えながら詳しく解説します。 teeコマンドとは何をするもの? まず、次のようなコマンドを見てみましょう。 ls このコマンドは、現在のディレクトリの内容を表示します。つまり、標準出力(stdout)へ出力するわけです。標準出力とは通常、画面、正確には仮想端末のディスプレイのことです
-
Linuxのwatchコマンドの使い方と実用例をわかりやすく解説
Linuxのwatchコマンドは、指定したコマンドを一定間隔で繰り返し実行し、その結果を画面に表示し続けるためのツールです。コマンドの出力が時間とともにどう変化するかをリアルタイムで監視したい場合に非常に便利です。この記事では、watchコマンドの基本的な使い方と、覚えておくと役立つ実用的な例を紹介します。 watchコマンドの基本構文 watchコマンドの構文は以下のとおりです。 watch オプション コマンド 各要素の意味は次のとおりです。 オプション: 後述の表から選択したオプションを指定します。watchコマンドのデフォルト動作を変更できます。 コマンド: watchが繰り返し実行