手当たり次第に書くんだ

飽きっぽいのは本能

目次に戻る

Overview

tr コマンドは、標準入力から文字を変換し、必要に応じて文字を圧縮または削除し、標準出力に書き込みます。sed コマンドでも同様の操作が可能ですが、sed コマンドはより複雑な操作を行うために使用されるため、単純な文字の置換や削除の場合は tr コマンドを使用する方が効率的です。

tr コマンドの書式

tr コマンドの書式は以下の通りです。

tr [OPTION]... SET1 [SET2]

tr コマンドは、対象ファイルをコマンドの引数として指定出来ない為、| (pipe), < (input redirect) などを使用して標準入力を tr コマンドに渡す必要があります。具体的には後述の使用例を参照して下さい。

tr コマンドのオプションと文字クラス

tr コマンドのオプションは以下の通りです。使用頻度の高いオプションはハイライトしています。

オプション説明
-c, -C, --complementSET1 に含まれない文字を使用します。
-d, --deleteSET1 内の文字を削除し、変換は行いません。
-s, --squeeze-repeats最後に指定された SET にリストされている各繰り返し文字のシーケンスを、その文字の単一の出現に置換します。
-t, --truncate-set1最初に SET1 を SET2 の長さに切り詰めます。
--helpヘルプを表示して終了します。
--versionバージョン情報を出力して終了します。
tr コマンドのオプション

tr コマンドで使用可能な文字クラスは次の通りです。SET に文字クラスを指定すると、tr コマンドはそれに対応する文字として解釈して処理します。使用頻度の文字クラスはハイライトしています。

文字クラス説明
\NNN8 進数値 NNN(1〜3 桁の 8 進数)に対応する文字
\バックスラッシュ
\aBELL (BEL)
\bバックスペース
\f改ページ
\n改行
\rキャリッジリターン
\t水平タブ
\v垂直タブ
CHAR1-CHAR2CHAR1 から 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 に等しいすべての文字を含む
tr コマンドで使用可能な文字クラス
  • -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 コマンドにオプションを指定していないため、aaaddd に変換されて出力されます。次に、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

目次に戻る

LPIC tr コマンド

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る