trは、 Unix、Plan 9、Inferno、およびUnix ライクなオペレーティングシステムで使用されるコマンドです。translateまたはtransliterateの略語であり、入力データセット内の特定の文字を置換または削除する操作であることを示しています。
このユーティリティは、標準入力からバイトストリームを読み込み、結果を標準出力に書き込みます。引数として、2つの文字セット(通常は同じ長さ)を受け取り、最初のセットの文字の出現箇所を、2番目のセットの対応する要素に置き換えます。たとえば、
tr 'abcd' 'jkmn'
すべての文字をaからj、bからk、cからm、dからnにマッピングします。
文字セットは文字範囲を使用することで省略できます。上記の例は次のように記述できます。
tr 'ad' 'jkmn'
POSIX準拠バージョンの ではtr、文字範囲によって表されるセットはロケールの照合順序に依存するため、スクリプトが作成されたロケールとは異なるロケールで実行される可能性がある場合は、文字範囲の使用を避ける方が安全です。範囲は多くの場合、[:alpha:]などのPOSIX文字セットに置き換えることができます。
このsフラグは、tr出力内の隣接する同一文字のシーケンスを単一のトークンに圧縮します。たとえば、
tr -s '\n'
1つ以上の改行文字の連続を、1つの改行文字に置き換えます。
このdフラグを指定するとtr、入力から指定された文字セットのすべてのトークンが削除されます。この場合、文字セット引数は1つだけ使用されます。以下のコマンドは、キャリッジリターン文字を削除します。
tr -d '\r'
フラグcは最初の文字セットの補数を示します。
tr -cd '[:alnum:]'
したがって、英数字以外の文字はすべて削除されます。
のオリジナル版はダグラス・マッキルロイtrによって書かれ、 Unix バージョン 4で導入されました。[ 1 ]
GNU coreutilstrにバンドルされているバージョンはJim Meyering によって書かれました。[ 2 ]このコマンドは、一般的な GNU Unix ライクなユーティリティのネイティブWin32ポートのUnxUtilsコレクションの一部として、Microsoft Windows用の別のパッケージとして利用できます。 [ 3 ]また、 OS-9シェルでも利用できます。[ 4 ]このコマンドは、 ASCIIのMSX-DOS2 Tools for MSX-DOSバージョン 2にも含まれています。[ 5 ] trコマンドはIBM iオペレーティングシステムにも移植されています。[ 6 ]tr
trGNUtrや従来のUnixを含むほとんどのバージョンのはtr、シングルバイト文字を扱い、Unicodeに準拠していません。例外として、基本的なUnicodeサポートを提供するHeirloom Toolchestの実装があります。
RubyとPerlにも同様に動作する内部tr演算子があります。[ 7 ] [ 8 ] Tclの文字列マップコマンドは、trが文字を文字にマッピングするのに対し、文字列を文字列にマッピングするという点でより汎用的です。[ 9 ]