構文
tr [-Acs] string1 string2
tr -s [-Ac] string1
tr -d [-Ac] string1
tr -ds [-Ac] string1 string1
説明
tr は、選択された文字を置換えまたは削除して、
標準入力を標準出力にコピーします。 string1 の入力文字は、 string2 の対応する文字に置き換えられます。 必要に応じて string1 、および string2 を引用することにより、 シェルのパターンマッチングを回避することができます。
tr は、次のコマンド行オプションを認識します。
| -A | | バイト単位で変換します。このフラグを指定すると、 tr は拡張文字をサポートしなくなります。 |
| -c | | string1 の文字セット ( string1 引き数で指定された場合を除き、現在の LC_CTYPE の設定で定義される文字セットに含まれるすべての文字セット)
を補完します。 これら N 文字は、 LC_COLLATE の現在の設定に従って、昇順で配列に置かれます。 |
| -d | | string1 で指定される配列にある入力文字、または照合要素の出現箇所をすべて削除します。 |
| | | -c と -d の両方を指定すると、 string1 で指定された文字がすべて削除されます。 string2 の内容は、 -s を指定しない限り、無視されます。
なお、 -d と -s の両方のフラグに同じ文字列を使用することはできません
( 両方のフラグを指定する場合は、 string1 (削除する文字列) と string2 (圧縮する文字列) が必要になります)。 |
| | | -d を省略すると、 string1 で指定された配列中の各入力文字列、または照合要素が string2 で指定される同じ位置に対応した文字、または照合要素に置き換えられます。 |
| -s | | string1 で指定された文字で、 string2 中の 1 つのインスタンスとして複数の文字が繰り返された文字列の出現箇所
をすべて置き換えます。 |
| | | string2 に文字クラスが含まれている場合は、引き数の配列の中に、この文字クラス
の中の文字がすべて含まれることになります。例えば、次のとおりです。 ただし、大文字/小文字の規約により、 string2 には、 toupper または tolower の文字ペアで該当する方の
2 文字目として定義された文字だけが 含まれることになります。例えば次のとおりです。 tr -s '[:upper:]' '[:lower:]' |
次の略記規約に基づいて、一定範囲の文字、反復文字、または 単一の照合要素を文字列の中に入れることができます。
| c1-c2 または | | |
| [c1-c2] | | それぞれ両端を含めた、 c1 から c2 までの照合要素の範囲 ( LC_COLLATE ロケールカテゴリの現在の設定で定義されたもの)
を表します。 |
| [:class:]または | | |
| [[:class:]] | | 定義済みの文字クラス ( LC_CTYPE ロケールカテゴリの現在の設定で定義されたもの)
に属するすべての文字を表します。 次の文字クラス名がそれぞれ指定されていれば、使用可能になります。 string1: alnum, alpha, blank, cntrl. digit, graph, lower, print, punct, space, upper,
または xdigit 文字クラスは照合順序で展開されます。 |
| | | -d および -s のフラグを両方を指定すると、 string2 では、いずれの文字クラスでも で使用できるようになります。
これ以外の場合、 string2 では lower または upper だけが使用可能になり、
該当する文字クラス (upper および lower )
が string1 で対応する位置に指定されている場合に限り、 有効になります。
このような指定は、大文字/小文字変換の要求とみなされます。 |
| | | string1 中に [:lower:] 、また string2 中に [:upper:] がある場合、配列には、
現在のロケールの LC_CTYPE カテゴリで対応する toupper の文字が含まれることになります。 string1 中に [:upper:] 、また string2 中に [:lower:] がある場合、配列には、 現在のロケールの LC_CTYPE カテゴリで対応する tolower の文字が含まれることになります。 |
| [=c=]または | | |
| [[=c=]] | | LC_COLLATE ロケールカテゴリ の現在の設定で定義された c と同じクラスに属するあらゆる文字、または照合要素を表します。 -d と -s の両オプションを併用した場合、
対応するクラス表現は string1 、または string2 に限って使用できます。 |
| [a*n] | | a が n 回繰り返されることを表します。 n の最初の数字が 0 ならば、 n は 8 進数とみなされます。そうでなければ、 n は 10 進数として処理されます。 n が 0 の場合、あるいは省略されている場合は、 string2-based シーケンス の長さを string1-based に拡張できる十分が長さが あるものとみなされます。 |
エスケープ文字 \ は、シェルの場合と同様に、
文字列の文字から特殊な意味を除去するのに使用することができます。
さらに、 \ の後に 1、2、または 3 桁の 8 進数がくると、 その数値によって与えられる
ASCII コードの文字を表します。
string1 または string2 にある ASCII NUL 文字はエスケープした文字としてのみ、つまり \000 として表すことができます。しかしそのように指定されている場合は
その他の文字と同じように処理され、正しく変換されます。 入力における
NUL 文字は、オプション -d "\000" を与えない限り、削除されません。
多言語化対応
環境変数
LANG により、セットされていない、またはヌルの多言語対応変数に対する
デフォルト値が設定されます。 LANG セットされていない場合、またはヌルの場合は、
"C" ( lang(5) を参照)
が使用されます。 多言語対応変数のいずれかの設定が不適当な場合には、 tr はすべての多言語対応変数が"C"に設定されているものとして動作します。 environ(5) を参照してください。
LC_ALL 空白以外の文字列値にセットすると、
その他の全多言語対応変数に対する値が変更されます。
LC_CTYPE により、 テキストをシングルバイト文字、マルチバイト文字のいずれで解釈するか、
正規表現中の文字クラスの表現にマッチしたプリント可能の文字として分類するかどうかが決まります。
LC_MESSAGES 標準エラーに書き込む診断メッセージ、および標準出力に書き込む情報メッセージの
フォーマットと内容を決めるロケールを指定します。
NLSPATH は、 LC_MESSAGES の処理に使用するメッセージカタログの位置を決めます。
戻り値
tr は以下の値のいずれかで終了します。
| 0 | | すべての入力が正常に処理されました。 |
| >0 | | エラーが発生しました。 |
例
ASCII 文字セットおよびデフォルトの照合シーケンスについては、 file1 では、すべてのワードリストを、 file2 では、1 行当たり 1 ワードを作成します。 ただし、1 ワードは英数文字全体の文字列であると解釈されます。
特殊文字をシェルによる解釈から保護するために、文字列を引用符で囲みます (012 は改行 (ラインフィード) 文字の
ASCII コードです)。
tr
-cs "[A-Z][a-z]" "[\012*]" <file1 >file2
上記と同様ですが、すべての文字セットおよび照合シーケンスについては以下のようになります。
tr -cs "[:alpha:]" "[ 12*]" <file1
>file2
file1 における小文字をすべて大文字に変換し、その結果を標準出力に書き出します。
tr "[:lower:]" "[:upper:]" <file1
等価クラスを使用して file1 にある基数文字 e のアクセント付きのバリエーションを識別し、それらから発音区別符号を取り除いてその結果を file2 に書き出します。
tr "[=e=]" "[e*]" <file1 >file2
file1 の各桁を # (番号記号) に変換し、結果を file2 に書き込みます。
tr "0-9" "[#*]" <file1 >file2
* (アスタリスク) は tr 2
つ目の文字列を 1 文字目と同じ長さになるまで 繰り返すように指示するものです。
参照
ed(1), sh(1), ascii(5), environ(5), lang(5), regexp(5)
標準準拠
tr: SVID2, SVID3, XPG2, XPG3, XPG4, POSIX.2