使用法: tr [オプション]... SET1 [SET2]
Translate, squeeze, and/or delete characters from standard input,
writing to standard output.
-c, -C, --complement use the complement of SET1
-d, --delete delete characters in SET1, do not translate
-s, --squeeze-repeats replace each input sequence of a repeated character
that is listed in SET1 with a single occurrence
of that character
-t, --truncate-set1 first truncate SET1 to length of SET2
--help この使い方を表示して終了
--version バージョン情報を表示して終了
SET は文字列によって指定します. 多くの場合その文字自身を表現します.
解釈のされ方は以下の通り:
\NNN 文字の 8 進数表現(1 から 3 個の 8 進数値)
\\ バックスラッシュ
\a ベル
\b バックスペース
\f フォームフィード
\n 改行
\r 復帰
\t 水平タブ
\v 垂直タブ
CHAR1-CHAR2 CHAR1 から CHAR2 までを昇順に展開した文字列
[CHAR1-CHAR2] SET1 と SET2 の両方で指定した場合には CHAR1-CHAR2 と同じ
[CHAR*] SET2 として, CHAR を SET1 の長さ分展開した文字列
[CHAR*REPEAT] CHAR を REPEAT 個展開した文字列, REPEAT の値を 0 から
始めた場合には, 8 進数として解釈
[:alnum:] 全てのアルファベットと数字
[:alpha:] 全てのアルファベット
[:blank:] 全ての水平方向空白文字
[:cntrl:] 全ての制御文字
[:digit:] 全ての数字
[:graph:] 全ての表示可能文字, 空白は含まない
[:lower:] 全ての小文字アルファベット
[:print:] 全ての表示可能文字, 空白も含む
[:punct:] 全ての句読点
[:space:] 全ての水平及び垂直タブ文字
[:upper:] 全ての大文字アルファベット
[:xdigit:] 全ての 16 進数数値
[=CHAR=] 全ての CHAR と等価な文字. 等価クラス
Translation occurs if -d is not given and both SET1 and SET2 appear.
-t may be used only when translating. SET2 is extended to length of
SET1 by repeating its last character as necessary. Excess characters
of SET2 are ignored. Only [:lower:] and [:upper:] are guaranteed to
expand in ascending order; used in SET2 while translating, they may
only be used in pairs to specify case conversion. -s uses SET1 if not
translating nor deleting; else squeezing uses SET2 and occurs after
translation or deletion.
Report tr bugs to bug-coreutils@gnu.org
GNU coreutils home page:
Usage: tr [OPTION]... SET1 [SET2]
Translate, squeeze, and/or delete characters from standard input,
writing to standard output.
-c, -C, --complement use the complement of SET1
-d, --delete delete characters in SET1, do not translate
-s, --squeeze-repeats replace each input sequence of a repeated character
that is listed in SET1 with a single occurrence
of that character
-t, --truncate-set1 first truncate SET1 to length of SET2
--help display this help and exit
--version output version information and exit
SETs are specified as strings of characters. Most represent themselves.
Interpreted sequences are:
\NNN character with octal value NNN (1 to 3 octal digits)
\\ backslash
\a audible BEL
\b backspace
\f form feed
\n new line
\r return
\t horizontal tab
\v vertical tab
CHAR1-CHAR2 all characters from CHAR1 to CHAR2 in ascending order
[CHAR*] in SET2, copies of CHAR until length of SET1
[CHAR*REPEAT] REPEAT copies of CHAR, REPEAT octal if starting with 0
[:alnum:] all letters and digits
[:alpha:] all letters
[:blank:] all horizontal whitespace
[:cntrl:] all control characters
[:digit:] all digits
[:graph:] all printable characters, not including space
[:lower:] all lower case letters
[:print:] all printable characters, including space
[:punct:] all punctuation characters
[:space:] all horizontal or vertical whitespace
[:upper:] all upper case letters
[:xdigit:] all hexadecimal digits
[=CHAR=] all characters which are equivalent to CHAR
Translation occurs if -d is not given and both SET1 and SET2 appear.
-t may be used only when translating. SET2 is extended to length of
SET1 by repeating its last character as necessary. Excess characters
of SET2 are ignored. Only [:lower:] and [:upper:] are guaranteed to
expand in ascending order; used in SET2 while translating, they may
only be used in pairs to specify case conversion. -s uses SET1 if not
translating nor deleting; else squeezing uses SET2 and occurs after
translation or deletion.
Report tr bugs to bug-coreutils@gnu.org
GNU coreutils home page:
TR(1) TR(1)
名前
tr - 文字の変換・削除や、連続する文字の圧縮を行う
書式
tr [-cdst ] [--complement] [--delete] [--squeeze-repeats] [--trun-
cate-set1] SET1 [SET2]
tr [--help] [--version]
説明
tr は標準入力を標準出力にコピーし、その際に以下のうちのいずれかを行う。
· 文 字 を 変 換 し 、 オ プションで指定すればさらに連続する文字を圧縮
(squeeze) する。
· 連続する文字を圧縮する。
· 文字を削除する。
· 文字を削除してから、連続する文字を圧縮する。
SET1 および (与えられていれば) SET2 引き数は、文字の順序付きセットを 定
義 する。これらの文字セットが入力に存在すると、 tr はその文字に対して動
作を行う。
オプション
-c, --complement
SET1 を、 SET1 自身の補集合 (SET1 に含まれない文字すべて) で置き
換える。
-d, --delete
SET1 にある入力文字を削除する。変換しない。
-s, --squeeze-repeats
同 じ文字の繰り返しを 1 文字に置き換える。この操作は変換や削除の
あとに行われる。 SET1 にある文字の繰り返しを、その文字 1 文字 に
置き換える。
-t, --truncate-set1
変換を行う前に、まず SET1 を SET2 の長さに切り詰める。
--help 標準出力に使用方法のメッセージを出力して正常終了する。
--version
標準出力にバージョン情報を出力して正常終了する。
文字セットの指定
SET1 および SET2 引き数のフォーマットは正規表現と似たものになっている。
しかし正規表現そのものではなく、実は文字の並びに過ぎない。これらの文 字
列 の中に記された文字は、ほとんどの場合はその文字自身を指す。文字列には
便宜上以下のような短縮形を用いることもできる。ただし SET1 また は SET2
の いずれかにしか用いることのできないものもある (このようなものには注記
がされている)。
バックスラッシュを用いたエスケープ
\a Control-G
\b Control-H
\f Control-L
\n Control-J
\r Control-M
\t Control-I
\v Control-K
\OOO OOO (1〜3 桁の 8 進数) によって指定される文字
\\ バックスラッシュ文字
範囲指定
‘M-N’ といった表記は、 M から N までのすべての文字を昇順に展開した文 字
列 になる。 M は照合順序中で N の前になければならず、これに反した場合は
エラーとなる。例えば ‘0-9’ は‘0123456789’ を指定したのと同じことにな る
。 System V 版の tr では範囲を指定する際に角括弧 ‘[]’ を用いるが、 GNU
版 tr ではこの形式はサポートしていない。ただしこの形式における変換指 定
は SET1 と SET2 の間で角括弧が対応していればちゃんと動作する。
繰り返し文字
SET2 における ‘[C*N]’ といった表記は N 個の文字 C に展開される。したが
って ‘[y*6]’ は ‘yyyyyy’ になる。 SET2 における ‘[C*]’ は SET2 を SET1
と同じ長さにするために必要な個数の文字 C に展開される。 N が 0 ではじま
る場合は 8 進数とみなされ、それ以外の場合は 10 進数とみなされる。
文字クラス
‘[:CLASS:]’ といった表記は、あらかじめ定義された文字クラス CLASS のすべ
て の文字に展開される。文字クラスには特定の順序は定義されていない。ただ
し ‘upper’ と ‘lower’ クラスのみは例外で、昇順に展開される 。 --delete
(-d) および --squeeze-repeats (-s) の両方が指定された場合は、 SET2 には
どんな文字クラスでも用いることができる。それ以外の場合は、 SET2 に指 定
で きるのは ‘lower’ および ‘upper’ のみで、しかもそれぞれに対応するクラ
ス (‘lower’ には ‘upper’、 ‘upper’ には ‘lower’) が SET1 の同じ位置に指
定 されていなければならない。この場合は大文字小文字が変換される。文字ク
ラス名を以下に示す。これら以外の名前が指定された場合にはエラーとなる。
alnum 英文字と数字
alpha 英文字
blank 水平方向の空白 (Horizontal whitespace)
cntrl 制御文字
digit 数字
graph 印刷できる文字 (空白は含まない)
lower 英小文字
print 印刷できる文字 (空白も含む)
punct 句読点
space 水平および垂直方向の空白
upper 英大文字
xdigit 16 進数の文字
等価クラス
‘[=C=]’ といった表記は、 C と等価な文字に展開される。このとき順序は定義
さ れない。等価クラスは、英語以外のアルファベットをサポートするために最
近発明されたものである。しかし現在のところこれらの定義や内容指定に標 準
的な方法はないようである。したがって GNU 版 tr でも完全には実装されてい
ない。それぞれの文字の等価クラスはその文字からのみ構成されている。し た
がってこの機能は現在のところ役に立たない。
変換
tr は SET1 と SET2 の両方が指定されていて、 --delete (-d) オプションが
指定されていない場合には変換を行う。 tr は入力のうち SET1 にある文字 を
SET2 の対応する位置にある文字に変換する。 SET1 に無い文字はそのまま出力
される。もし文字が SET1 に 2 回以上現われ、 SET2 の対応する文字がすべて
同 じでない場合には、最後の文字だけが使われる。例えば以下の二つのコマン
ドは等価である:
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 の足
りない部分を最後の文字で埋め、 SET1 と同じ長さにする。また System V 版
tr は SET1 の尾部を切り捨てて SET2 と同じ長さにする。
デ フ ォ ル ト で は GNU 版 tr は BSD 版 tr と同じように振る舞う。また
--truncate-set1 (-t) オプションが指定された場合には、 GNU 版 tr は Sys-
tem V 版 tr のように振る舞う。このオプションは変換以外の点に関しては無
視される。 System V 版 tr 的な振る舞いの下では、 BSD 版の有名な用法:
tr -cs A-Za-z0-9 ’\012’
は使えなくなる。これはアルファベット文字および数字以外の文字を改行文 字
に 置換するものであるが、 System V では内容が 0 のバイト (SET1 の補集合
の先頭要素) のみを変換することになる。
繰り返しの圧縮と削除
--delete (-d) オプションだけが指定された場合は、 tr は入力のう ち SET1
にある文字を削除する。
--squeeze-repeats (-s) オプションだけが指定された場合には、 tr は入力の
うち、 SET1 にある文字の繰り返しを、その文字 1 文字に置き換える。
--delete と --squeeze-repeats の両方のオプションが指定された場合には 、
tr はまず SET1 にある文字を削除し、残りのうち SET2 にある文字の繰り返し
を圧縮する。
--squeeze-repeats オプションは変換と共に用いることもできる。この場合 に
は tr はまず変換を行い、残りの文字のうち SET2 にあるものを圧縮する。
以下にこれらのオプションを組み合わせた利用例を示す:
· 内容が 0 のバイトを削除する:
tr -d ’\000’
· すべての単語をそれ自身のみからなる行に変換する。つまりアルファベット
文字、数字以外の文字を改行文字に変換し、改行文字の繰り返しを一つの改 行
文字に圧縮する:
tr -cs ’[a-zA-Z0-9]’ ’[\n*]’
· 改行文字の繰り返しを一つの改行文字に変換する。
tr -s ’\n’
· 文書中の同じ単語の連続を見つける。例えば "the the" のように、改行を挟
んで単語をダブって書いてしまうことがよくある。以下の bourne シェルス ク
リ プトは、まず句読点や空白の連続を改行に変換する。これによって、各「単
語」は、それぞれ自分自身だけからなる行に置かれる。次に大文字を小文字 に
変換し、最後に uniq(1) を -d オプションで起動して、連続した同じ単語だけ
を表示する。
#!/bin/sh
cat "$@" \
| tr -s ’[:punct:][:blank:]’ ’\n’ \
| tr ’[:upper:]’ ’[:lower:]’ \
| uniq -d
移植性
環境変数 POSIXLY_CORRECT を指定すると、 POSIX.2 との厳密な互換性をと る
た めに、警告およびエラーメッセージのいくつかが出力されなくなる。指定し
なければ、以下のような場合にメッセージが出る。
1. --delete オプションが指定されているが --squeeze-repeats が指定されて
おらず、かつ SET2 が与えられている場合には、GNU 版 tr はデフォルトで
は使用法のメッセージを表示して終了する。なぜならこのとき SET2 は利用
さ れないからである。しかし POSIX 規格によれば、この場合は SET2 は単
に無視されなければならない。引き数を黙って無視するのは良くない仕様だ
と思うのだが。
2. あいまいな 8 進数エスケープが指定された場合。例えば ‘\400’ は実際に
は \40 と数字 0 の並びと解釈される。なぜなら 8 進数の 400 に対応する
バイトは存在しないからである。
GNU 版 tr は BSD や System V と互換ではない。例を挙げれば、 POSIX 定義
にある ‘[:alpha:]’, ‘[=c=]’, ‘[c*10]’ といった指定の解釈を止めさせる よ
う なオプションは存在しない。また GNU 版 tr は内容が 0 のバイトを自動的
には削除しない。一方これまでの UNIX 版では、このバイトを残す方法の方 が
存在しない。
注意
プログラムのバグについては bug-textutils@gnu.org に報告してください。
man ページは Ragnar Hojland Espinosa
TR(1) User Commands TR(1)
NAME
tr - translate or delete characters
SYNOPSIS
tr [OPTION]... SET1 [SET2]
DESCRIPTION
Translate, squeeze, and/or delete characters from standard input, writ-
ing to standard output.
-c, -C, --complement
use the complement of SET1
-d, --delete
delete characters in SET1, do not translate
-s, --squeeze-repeats
replace each input sequence of a repeated character that is
listed in SET1 with a single occurrence of that character
-t, --truncate-set1
first truncate SET1 to length of SET2
--help display this help and exit
--version
output version information and exit
SETs are specified as strings of characters. Most represent them-
selves. Interpreted sequences are:
\NNN character with octal value NNN (1 to 3 octal digits)
\\ backslash
\a audible BEL
\b backspace
\f form feed
\n new line
\r return
\t horizontal tab
\v vertical tab
CHAR1-CHAR2
all characters from CHAR1 to CHAR2 in ascending order
[CHAR*]
in SET2, copies of CHAR until length of SET1
[CHAR*REPEAT]
REPEAT copies of CHAR, REPEAT octal if starting with 0
[:alnum:]
all letters and digits
[:alpha:]
all letters
[:blank:]
all horizontal whitespace
[:cntrl:]
all control characters
[:digit:]
all digits
[:graph:]
all printable characters, not including space
[:lower:]
all lower case letters
[:print:]
all printable characters, including space
[:punct:]
all punctuation characters
[:space:]
all horizontal or vertical whitespace
[:upper:]
all upper case letters
[:xdigit:]
all hexadecimal digits
[=CHAR=]
all characters which are equivalent to CHAR
Translation occurs if -d is not given and both SET1 and SET2 appear.
-t may be used only when translating. SET2 is extended to length of
SET1 by repeating its last character as necessary. Excess characters
of SET2 are ignored. Only [:lower:] and [:upper:] are guaranteed to
expand in ascending order; used in SET2 while translating, they may
only be used in pairs to specify case conversion. -s uses SET1 if not
translating nor deleting; else squeezing uses SET2 and occurs after
translation or deletion.
AUTHOR
Written by Jim Meyering.
REPORTING BUGS
Report tr bugs to bug-coreutils@gnu.org
GNU coreutils home page:
Copyright(C) linux-cmd.com All Rights Reserved. Author Takayuki Yukawa