このコマンドは,個別に文字を処理します.
tr
: 文字の変換,圧縮,そして/または,削除概要です.
tr [option]... set1 [set2]
tr
は標準入力を標準出力にコピーし,そのとき以下の処理の一つを実行
します.
set1と(与えられている場合)set2引数は,文字の順序を持つ文字を
定義し,以下のset1とset2を参照します.これらの設定は,
tr
が処理する入力文字です.`--complement' (`-c')オプショ
ンは,set1をその補語(set1にない全ての文字)に置換します.
set1とset2の引数の書式は,正規表現の書式に似ています.しかし 正規表現ではなく,文字のリストのみです.これらの文字列のほとんどの文字は 単にその文字自身を表すが,利便性のため,文字列には以下でリストアップされ た速記を含むことができます.そのうち,以下で注意するset1または set2のみでしか利用できないものもあります.
tr
は,範囲を囲む角括弧を使用する
System V 構文をサポートしませんが,その書式で指定された変換は,
set1のカッコがset2のカッコと同じように対応する限り働き
ます.
upper
とlower
クラスは,昇順に展開されます.`--delete'
(`-d')と`--squeeze-repeats' (`-s')オプションが両方与えら
れた場合,あらゆる文字クラスはset2で使用されるはずです.それ以外の
場合,文字クラスlower
とupper
は,set2に適用され,そし
てそれは,対応する(それぞれupper
とlower
の)文字クラスは
set1の位置に関連して同じものが指定されている場合のみです.こうする
ことで,大文字小文字の変換を指定します.クラス名は以下で与えられます.無
効なクラス名が与えられた場合,結果としてエラーとなります.
alnum
alpha
blank
cntrl
digit
graph
lower
print
punct
space
upper
xdigit
tr
では,完全には実装され
ていません.それぞれの文字の等価クラスは,その文字からのみ構成されていて,
特定の利用価値はありません.
set1とset2の両方が与えられ,`--delete' (`-d')オプ
ションが与えられていない場合,tr
は変換を実行します.tr
は,
set1にある入力のぞれぞれの文字を,対応するset2の文字に変換し
ます.set1に無い文字は,そのまま変換されず通過します.set1の
文字が1回以上現われ,set2の対応する文字が全て同じではない場合,最
後の1つのみ使用されます.例えば,以下の2つのコマンドは等価です.
tr aaa xyz tr a z
tr
の一般的な使用法は,小文字を大文字に変換することです.これは多
くの方法で行うことができます.その3つを以下に書きます.
tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ tr a-z A-Z tr '[:lower:]' '[:upper:]'
tr
が変換を実行しているとき,set1とset2は,通常同じ長
さです.set1がset2より短い場合,set2の終りの余分な文字
は無視されます.
一方,set1をset2より大きくすることは移植性がありません.
POSIX.2は,その結果は未定義だと述べています.この場合,BSD
tr
は,set2をset2の最後文字で必要なだけ繰り返すことで
set1の長さに引き延ばします.System V tr
は,set1を
set2の長さに切り詰めます.
デフォルトで,GNU tr
はBSD tr
のようにこの状態を扱います.
`--truncate-set1' (`-t')オプションが与えられた場合,GNU
tr
はSystem V tr
のようにこの状態を扱います.このオプション
は,変換以外の処理では無視されます.
この場合,System V tr
のように動作させると,比較的一般的なBSDの表
現は壊れます.
tr -cs A-Za-z0-9 '\012'
それは,全ての英数字を改行に変換する代わりに,(set1の補語の最初の 要素)ゼロバイトのみ変換されるためです.
`--delete' (`-d')オプションのみ与えられたとき,tr
は,
set1にあるあらゆる入力文字を削除します.
`--squeeze-repeats' (`-s')オプションのみ与えられたとき,
tr
は,set1にある,それぞれの入力の繰り返される文字の並びを,
その文字の単一の発生(訳注:1つの文字)に置換します.
`--delete'と`--squeeze-repeats'の両方が与えられた場合,
tr
は,最初にset1を用いて削除を実行し,set2を用いて残
りの文字から繰り返しを圧縮します.
`--squeeze-repeats'オプションは,変換時にも利用でき,その場合,
tr
は,最初に変換を実行し,set2を用いて残りの文字から繰り返
しを圧縮します.
ここに,オプションの様々な組合せの表現例をいくつかあげます.
tr -d '\000'
tr -cs 'a-zA-Z0-9' '[\n*]'
tr -s '\n'
uniq
を`-d'オプションで実行します.
#!/bin/sh cat "$@" \ | tr -s '[:punct:][:blank:]' '\n' \ | tr '[:upper:]' '[:lower:]' \ | uniq -d
環境変数@env{POSIXLY_CORRECT}を設定すると,POSIX.2を厳密に遵守する ため,以下の警告とエラーのメッセージをオフにします.それ以外の場合,以下 の診断が発生されます.
tr
は,
set2が使用されないため,デフォルトで使用方法のメッセージを出力し終
了します.POSIX指定は,この場合set2は無視されるはずだと述べて
います.黙って引数を無視するのは悪い考えです.
GNU tr
は,BSDやSystem Vとの完全な互換性を提供しません.例えば,
POSIXの概念`[:alpha:]',`[=c=]'と,`[c*10]'の解釈を
利用不可にすることはできません.また,GNU tr
は,ゼロバイトを保護
する方法を提供できない伝統的なUnixバージョンと異なり,ゼロバイトを自動的
に削除できません.
expand
: タブをスペースに変換
expand
は,与えられたそれぞれのfile,または,与えられない場
合や`-'のfileの場合は標準入力の内容を,タブ文字を適切な数のス
ペースに変換して,標準出力に書き出します.概要です.
expand [option]... [file]...
デフォルトで,expand
は全てのタブをスペースに変換します.それは全
ての出力でバックスペース文字を維持します.それらはタブ計算に対し,列の数
を減少させます.デフォルトの動作は`-8'(タブをそれぞれ8列に設定する)
と同じです.
プログラムは,以下のオプションを受け入れます.section 共通のオプション,も参 照してください.
unexpand
: スペースをタブに変換する
unexpand
は,与えられたそれぞれのfile,または与えられない場
合や`-'のfileに対しては標準入力の内容を,2つ以上のスペースや
タブ文字の文字列を,必要とされる多くのスペースと同等の,続けることが可能
な多くのタブに変換しながら,内容を標準出力に書き出します.概要です.
unexpand [option]... [file]...
デフォルトで,unexpand
は,最初のスペースとタブ(前にあるものが全て
非スペース文字や非タブ文字となるもの)のみを,ぞれぞれの行で変換します.
それは,出力でバックスペース文字を維持します.タブの計算に対し,列の数を
少なくします.デフォルトで,タブは8列毎に設定されます.
プログラムは以下のオプションを受け入れます.section 共通のオプション,も参照 してください.
Go to the first, previous, next, last section, table of contents.