以下のオプションが利用できます:
書式の最初の形式では、 string1 に含まれる文字は、 string1 の 1 文字目は string2 の 1 文字目と置き換え...というように string2 に置き換えられます。 もし string1 が string2 よりも長い場合は、 string2 の最後の文字が、 string1 と対応させるのに足りない分だけ続いているものとみなされます。
書式の 2 番目の形式では、 string1 に含まれる文字は、入力から削除されます。
書式の 3 番目の形式では、 string1 に含まれる文字は、 -s オプションの解説の通りに圧縮されます。
書式の 4 番目の形式では、 string1 に含まれる文字は入力から削除され、 string2 に含まれる文字は -s オプションの解説の通りに圧縮されます。
string1 string2 の文字の集合を指定するのに、以下のような記述方法が利用できます:
これら以外のバックスラッシュに続く文字は、その文字自身に対応します。
Bf Em 現在の実装による範囲式の解釈が、以前の実装と違う事に関する重要な注記は、 以下の 互換性 セクションを参照してください。 Ef
``[:lower:]
''
が
string1
に登場し、
``[:upper:]
''
が
string2
で相対的に同じ位置に登場する場合、現在のロケールにおける
LC_CTYPE
カテゴリでの
toupper
マッピングの文字列ペアを表現します。
``[:upper:]
''
が
string1
に登場し、
``[:lower:]
''
が
string2
で相対的に同じ位置に登場する場合、現在のロケールにおける
LC_CTYPE
カテゴリでの
tolower
マッピングの文字列ペアを表現します。
大文字小文字の変換の例外を除けば、クラス内の文字の順序は特定されていません。
どのような ASCII 文字が、これらのクラスに含まれているのかという情報を 調べたい場合には、 ctype(3) および関連マニュアルを参照してください。
file1 に含まれる単語 (文字の最大長の並び) のリストを、 各行につき 1 つずつ出力します。
file1 の内容を大文字に変換します。
(これはすべてのロケールで正しく動作するため、 UNIX の伝統的な慣用句である ``tr a-z A-Z '' よりも好ましいです)
表示できない文字を file1 から削除します。
発音区分記号を、 `e' のアクセント付きバリアントすべてから削除します。
"tr [=e=] e"
古くからの BSD の実装および POSIX 標準では、文字の範囲指定には ``c-c '' という文法を用いますが、古い System V の実装では ``[c-c] '' を用いています。 System V のシェルスクリプトは、文字の置換を行おうとする 場合にはうまく動作するはずです。 つまり、 ``tr [a-z] [A-Z] '' と指定した場合には、 string1 の `[' が string2 の `[' に変換されるため、うまく動作します。 しかし、シェルスクリプトが、 ``tr -d [a-z] '' というコマンドのように文字の削除や圧縮を行う場合には、 `[' と `]' の文字が削除や圧縮の対象に含まれてしまいます。 古い実装の System V ではこのようには動作しません。 さらに、 `a' , `-' , `z' という 3 つの文字を表現するのに、 ``a-z '' と記述するような、その並びに依存しているあらゆるスクリプトは、 ``a\-z '' と書き直す必要があります。
ユーティリティは昔から、入力における NUL バイトの操作を 禁止されていました。 さらに、入力から NUL を取り除いていました。 この実装では、この振る舞いはバグとみなされ、削除されました。
ユーティリティは昔から、たとえば、2 つの文字列が指定されない限り -c および -s オプションを無視する、などの文法上の誤りを極端なまでに許していました。 この実装では、不正な文法は許されなくなっているはずです。
string2 が string1 よりも短い場合に string2 の最後の文字が複製される機能は、 POSIX では許されていますが必須ではないことに注意して下さい。 他の POSIX システムへの可搬性のあるシェルスクリプトを 作ろうとするならば、この振る舞いを当てにせずに、 ``[#*] '' という表現を使うべきです。 -u オプションは St -p1003.1-2001 標準の拡張です。