名前 | 形式 | 機能説明 | オプション | オペランド | 使用法 | 使用例 | 環境 | 終了ステータス | 属性 | 関連項目 | 注意事項
tr ユーティリティは、選択した文字を置き換えるか削除して、 標準入力を標準出力へコピーします。指定されたオプションと string1 と string2 の両オペランドにより、 文字や単一文字比較要素のコピー中に発生する変換を制御します。
以下のオプションを指定できます。
string1 で指定された文字のセットを補完します。
string1 で指定された文字を入力中からすべて削除します。
繰り返して現れた文字を 1 個の文字に置き換えます。
-d オプションを省略すると、以下の処理が行われます。
string1 で指定した配列中の文字が入力中で見つかった場合、 string2 で指定した配列中の同じ位置にある文字に置き換えます。 string2 が示す配列が string1 が示す配列より短い場合、処理の結果は予測できません。
-c オプションを指定すると、 string1 で指定された文字の補完集合 ( LC_CTYPE の現在の設定値で定義されている現文字セット内のすべての文字から、 string1 オペランドで実際に指定された文字を除いたもの ) が、 LC_COLLATE の現在の設定値で定義されている照合順序に従って、 昇順で配列に置かれます。
なお文字クラス表現や同等クラス表現により指定される文字の順序は 定義されていないため、そのような表現を使用するのは、 複数の文字を同一の文字にマップする場合に限るべきです。 ただし前述のように、大文字と小文字との間の変換は例外です。
-d オプションを指定すると、以下の処理が行われます。
string1 で指定した配列中にある入力文字は削除されます。
-c オプションも一緒に指定された場合、 string1 で指定した文字を除くすべての文字が削除されます。 -s オプションが指定されていなければ、 string2 の内容は無視されます。
-d と -s の 2 つのオプションをともに指定する場合、削除用の string1 と圧縮用の string2 を両方とも指定しなければなりません。 この場合、 同じ文字列を指定することはできません。
-s オプションを指定すると、 何らかの削除または変換発生後に同じ文字が連続して出現し、 その文字が最終オペランドで指定した配列中に存在していれば、 一連の文字はその文字 1 個に置き換えられます。 最終オペランドとして、次の例に示すような文字クラスが指定されたとします。
tr -s '[:space:]'
この場合、最終オペランドの配列には、 その文字クラスのすべての文字が含まれることになります。 ただし、次のような大文字と小文字の変換が指定された場合には 最終オペランドの配列には、 toupper と tolower の対のうち 2 番目の文字として定義されている方の文字だけが含まれます ( toupper(3C) と tolower(3C) を参照)。
tr -s '[:upper:]' '[:lower:]'
string1 または string2 に空の文字列を指定した場合、処理の結果は予測できません。
以下のオペランドを指定できます。
変換を制御する文字列です。 各文字列は、変換に使用される文字配列に置き換えられる、一群の文字を表します。
オペランド string1 と string2 により 2 個の文字配列を定義します。以下に示す要素を使って、文字や 単一文字照合要素を指定できます。これらの要素を使った結果、複数文字 照合要素が得られた場合には、 tr は配列からその複数文字要素を除きます。 このとき、診断メッセージは発行しません。
以下の説明文中に現れない文字は、その文字自体を表します。
8 進数のシーケンスを使って、具体的なコード値を示す文字を表すことができます。 8 進数シーケンスは、バックスラッシュの後に最大 1 、 2 、または 3 桁の 8 進数 (01234567) を付加したものです。 ここで指定したシーケンスにより、 1 、 2 、または 3 桁の 8 進整数で表される文字が、配列中に配置されます。 複数バイト文字は、 この種のエスケープシーケンスがいくつか連続したものを必要とします。 そのとき、各バイトの先頭に \ が必要です。
バックスラッシュ付きのエスケープシーケンスとして、 \a、 \b、 \f、 \n、 \r、 \t、 \v がサポートされています。 バックスラッシュの後に、これ以外の文字で 8 進数字でもない文字を指定した場合、結果は予測できません。
現在の LC_COLLATE ロケールカテゴリの設定による定義に従い、照合要素の範囲を指定します。 ここで指定する 2 つの文字も範囲に含まれます。最初の文字は、現在の照合順序において、 2 番目の文字の前に位置していなければなりません。 この範囲に含まれる文字または照合要素は、 昇順で配列中に置かれます。
現在の LC_CTYPE ロケールカテゴリの設定値に従い、 指定された文字クラスに属するすべての文字を表します。 以下の文字クラス名が string1 として指定できます。
alnum blank digit lower punct upper alpha cntrl graph print space xdigit
さらに、 [:name:] 形式の文字クラス式も指定できます。ただし、 name が LC_CTYPE カテゴリ内で charclass 定義を与えられているようなロケールにおいてのみです。
注: /usr/bin/tr が文字クラス式をサポートするのは、単一バイトのロケールにおいてのみです。その他のロケールで文字クラス式をサポートするには、/usr/xpg4/bin/tr を使用してください。
-d と -s の両オプションが指定されていれば、どんな文字クラス名でも string2 に指定できます。両オプションが指定されなければ、 lower または upper だけが string2 として指定できます。ただし、これに対応する文字クラス upper または lower が string1 中の同等の位置に指定された場合だけです。 このような指定は、大文字と小文字間の変換要求と見なされます。 [:lower:] が string1 中に現れ、 [:upper:] が string2 中に現れた場合、現在のロケールの LC_CTYPE カテゴリ中の toupper マッピングから得られる文字が、配列に含まれることになります。 [:upper:] が string1 中に現れ、 [:lower:] が string2 中に現れた場合、現在のロケールの LC_CTYPE カテゴリ中の tolower マッピングから得られる文字が、配列に含まれることになります。 各マッピングの対のうち、最初の文字が string1 の配列に、 2 番目の文字が string2 の配列に置かれます。配列内での位置は同じになります。
大文字と小文字間の変換の場合を除き、 文字クラス式で指定された文字を配列中に置く順序は決まっていません。
class に指定した文字が現在のロケール用の正しい文字クラスを表していない場合、 処理の結果は予測できません。
現在の LC_COLLATE ロケールカテゴリの設定による定義に従い、 指定された文字クラスに属するすべての文字を表します。 equiv と同じ同等クラスに属するすべての文字または照合要素を表します。 同等クラス式は strint1 に指定できます。また -d と -s の両オプションを指定した場合には、 string2 にも指定できます。この同等クラスに属する文字を配列に置く順序は、 決まっていません。
x が示す文字の n 回の連続発生を表します。この式は複数の文字を 1 個の文字にマップするために使用するので、 string2 にだけ指定できます。 n を省略するか、または 0 を指定した場合、 string2 に基づくシーケンスを string1 に基づくシーケンスに拡張するのに十分な大きさ、と見なされます。 n の先頭の数字が 0 のとき、この数値は 8 進数と見なされます。 0 でなければ 10 進数と見なされます。
ファイルが 2 ギガバイト (231 バイト) 以上ある場合の tr の動作については、 largefile(5) を参照してください。
以下の例は、 file1 中にあるすべての単語を 1 行に 1 個の形式で file2 に出力します。ここで言う単語とは、最大文字列を表します。
tr -cs "[:alpha:]" "[\n*]" <file1 >file2 |
次の例は、 file1 中のすべての小文字を大文字に変換し、その結果を標準出力に 書き出します。
tr "[:lower:]" "[:upper:]" <file1 |
なお、対応する XPG3 での例に示されている警告は、 この場合有効ではありません。 この大文字・小文字変換は、 tolower と toupper を使った特殊なケースで、ロケールが正しく定義されているとき、 マッピングが正しく行われることを確認するものです。
次の例は、同等クラスを使って file1 中でアクセント記号付きのベース文字 e を認識し、その記号を取り除いて file2 に書き出します。
tr "[=e=]" e <file1 >file2 |
tr の実行に影響を与える環境変数 LC_COLLATE、LC_CTYPE、LC_MESSAGES、NLSPATH についての詳細は、environ(5) を参照してください。
次の属性については attributes(5) のマニュアルページを参照してください。
ed(1), sed(1), sh(1), tolower(3C), toupper(3C), ascii(5), attributes(5), environ(5), largefile(5), XPG4(5)
以前のバージョンとは違って、 /usr/xpg4/bin/tr は入力ストリーム中の NUL 文字を正しく処理します。 NUL 文字は tr -d '\000' によって取り除くことができます。
名前 | 形式 | 機能説明 | オプション | オペランド | 使用法 | 使用例 | 環境 | 終了ステータス | 属性 | 関連項目 | 注意事項