Overview
tr
コマンドは、標準入力から文字を変換し、必要に応じて文字を圧縮または削除し、標準出力に書き込みます。sed
コマンドでも同様の操作が可能ですが、sed
コマンドはより複雑な操作を行うために使用されるため、単純な文字の置換や削除の場合は tr
コマンドを使用する方が効率的です。
tr コマンドの書式
tr
コマンドの書式は以下の通りです。
tr [OPTION]... SET1 [SET2]
tr
コマンドは、対象ファイルをコマンドの引数として指定出来ない為、|
(pipe), <
(input redirect) などを使用して標準入力を tr
コマンドに渡す必要があります。具体的には後述の使用例を参照して下さい。
tr コマンドのオプションと文字クラス
tr
コマンドのオプションは以下の通りです。使用頻度の高いオプションはハイライトしています。
オプション | 説明 |
---|---|
-c , -C , --complement | SET1 に含まれない文字を使用します。 |
-d , --delete | SET1 内の文字を削除し、変換は行いません。 |
-s , --squeeze-repeats | 最後に指定された SET にリストされている各繰り返し文字のシーケンスを、その文字の単一の出現に置換します。 |
-t , --truncate-set1 | 最初に SET1 を SET2 の長さに切り詰めます。 |
--help | ヘルプを表示して終了します。 |
--version | バージョン情報を出力して終了します。 |
tr コマンドで使用可能な文字クラスは次の通りです。SET に文字クラスを指定すると、tr コマンドはそれに対応する文字として解釈して処理します。使用頻度の文字クラスはハイライトしています。
文字クラス | 説明 |
---|---|
\NNN | 8 進数値 NNN(1〜3 桁の 8 進数)に対応する文字 |
\ | バックスラッシュ |
\a | BELL (BEL) |
\b | バックスペース |
\f | 改ページ |
\n | 改行 |
\r | キャリッジリターン |
\t | 水平タブ |
\v | 垂直タブ |
CHAR1-CHAR2 | CHAR1 から CHAR2 までのすべての文字を昇順に含む |
[CHAR*] | SET1 の長さに達するまで、CHAR のコピーを SET2 に含む |
[CHAR*REPEAT] | CHAR の REPEAT 個のコピー。0 から始まる場合は 8 進数で指定する |
[:alnum:] | すべての文字と数字を含む |
[:alpha:] | すべての文字を含む |
[:blank:] | すべての水平空白文字を含む |
[:cntrl:] | すべての制御文字を含む |
[:digit:] | すべての数字を含む |
[:graph:] | スペースを含まないすべての印刷可能文字を含む |
[:lower:] | すべての小文字を含む |
[:print:] | スペースを含むすべての印刷可能文字を含む |
[:punct:] | すべての句読点文字を含む |
[:space:] | 水平または垂直の空白文字を含む |
[:upper:] | すべての大文字を含む |
[:xdigit:] | すべての 16 進数桁を含む |
[=CHAR=] | CHAR に等しいすべての文字を含む |
-d
オプションが指定されていない場合、および SET1 と SET2 が共に表示される場合に変換が行われます。-t
は変換時にのみ使用できます。- SET2 は、必要に応じてその最後の文字を繰り返して SET1 の長さに延長されます。
- SET2 の余分な文字は無視されます。
[:lower:]
と[:upper:]
だけが昇順で展開されることが保証されています。変換時に SET2 で使用される場合、これらは大文字小文字変換を指定するためにペアでのみ使用できます。-s
は最後に指定された SET を使用し、変換または削除の後に発生します。
tr コマンドの使用例
下記の tr-test.txt ファイルを例とします。
myadmin@ubuntu:~$ cat tr-test.txt
aaa bbb ccc
aaa bbb ccc
以下の例は、cat
の出力を tr
の入力に |
(pipe) で渡しています(以降同じです)。tr
コマンドにオプションを指定していないため、aaa
が ddd
に変換されて出力されます。次に、tr
コマンドに tr-test.txt
の出力を <
(input redirect) で入力リダイレクトしていますが、出力結果は同じであることが確認できます。
myadmin@ubuntu:~$ cat tr-test.txt | tr aaa ddd
ddd bbb ccc
ddd bbb ccc
myadmin@ubuntu:~$ tr aaa ddd < tr-test.txt
ddd bbb ccc
ddd bbb ccc
以下の例では、tr
コマンドに -d
オプションを指定しているため、aaa
が削除されて出力されます。
myadmin@ubuntu:~$ cat tr-test.txt | tr -d aaa
bbb ccc
bbb ccc
以下の例では、tr
コマンドに -s
オプションを指定しているため、連続した a
が 1 文字に変換されて出力されます。
myadmin@ubuntu:~$ cat tr-test.txt | tr -s a
a bbb ccc
a bbb ccc
以下の例では、tr
コマンドに -s
オプションを指定し、さらに文字クラスで [:space:]
を指定しています。この場合、連続したスペースは 1 つのスペースに変換されて出力されます。
myadmin@ubuntu:~$ cat tr-test.txt | tr -s [:space:]
aaa bbb ccc
aaa bbb ccc