tr是translate的缩写,该命令可以将一个字符替换成另一个字符。其实,tr可以完成的任务,都可以用sed来完成,但tr用起来要简单得多,而且运行速度也要快一些。与大部分过滤器命令不一样,tr只能接受标准输入的数据,而不能从文件读取。
替换或删除标准输入的指定字符,并输出到标准输出
tr [option] SET1 [SET2]
-d 删除字符
tr命令用来替换时,应有2个参数,SET1和SET2,如果参数中不包含空白字符,参数两边的引号可以省略。如将文本中的a替换成A:
[peter@ibi98 tr]$ cat demo_wc_3 Amylase is an important and indispensable enzyme that plays a pivotal role in the field of biotechnology. It is produced mainly from microbial sources and is used in many industries. [peter@ibi98 tr]$ cat demo_wc_3 |tr 'a' 'A' AmylAse is An importAnt And indispensAble enzyme thAt plAys A pivotAl role in the field of biotechnology. It is produced mAinly from microbiAl sources And is used in mAny industries.
参数如果包含多个字符,分三种情况:
SET1与SET2字符数相同 SET1的字符依次替换成SET2的字符; SET1大于SET2的字符数 SET1多出的字符替换成SET2的最后一个字符; SET1小于SET2的字符数 SET2多余的字符不使用
如下面的3个例子:
[peter@ibi98 tr]$ cat demo_wc_3 |tr 'ab' 'AB' AmylAse is An importAnt And indispensABle enzyme thAt plAys A pivotAl role in the field of Biotechnology. It is produced mAinly from microBiAl sources And is used in mAny industries. [peter@ibi98 tr]$ cat demo_wc_3 |tr 'abc' 'AB' AmylAse is An importAnt And indispensABle enzyme thAt plAys A pivotAl role in the field of BioteBhnology. It is produBed mAinly from miBroBiAl sourBes And is used in mAny industries. [peter@ibi98 tr]$ cat demo_wc_3 |tr 'ab' 'ABC' AmylAse is An importAnt And indispensABle enzyme thAt plAys A pivotAl role in the field of Biotechnology. It is produced mAinly from microBiAl sources And is used in mAny industries.
对于字母和数字等连续的符号,可以用C1-C2这种写法表示范围,如:
[peter@ibi98 tr]$ cat demo_wc_3 |tr 'b-d' 'B-D'
Amylase is an important anD inDispensaBle enzyme that
plays a pivotal role in the fielD of BioteChnology. It is
proDuCeD mainly from miCroBial sourCes anD is useD in many
inDustries.
tr还有一些表示集合的符号,如将小写字母转换成大写字母可以用下面的集合符号:
[peter@ibi98 tr]$ cat demo_wc_3 |tr '[:lower:]' '[:upper:]'
AMYLASE IS AN IMPORTANT AND INDISPENSABLE ENZYME THAT
PLAYS A PIVOTAL ROLE IN THE FIELD OF BIOTECHNOLOGY. IT IS
PRODUCED MAINLY FROM MICROBIAL SOURCES AND IS USED IN MANY
INDUSTRIES.
tr表示集合的符号有:
[:alnum:] 所有字母字符与数字 [:alpha:] 所有字母字符 [:blank:] 所有水平空格(空格、制表符) [:cntrl:] 所有控制字符 [:digit:] 所有数字 [:graph:] 所有可打印的字符(不包含空格符) [:lower:] 所有小写字母 [:print:] 所有可打印的字符(包含空格符) [:punct:] 所有标点字符 [:space:] 所有水平与垂直空格符 [:upper:] 所有大写字母 [:xdigit:] 所有16进位制的数字
如果用-d选项删除字符,则只需要一个参数,如:
[peter@ibi98 tr]$ cat demo_wc_3 |tr -d '[:blank:]'
Amylaseisanimportantandindispensableenzymethat
playsapivotalroleinthefieldofbiotechnology.Itis
producedmainlyfrommicrobialsourcesandisusedinmany
industries.
处理文本时,如果需要进行简单的字符替换或删除,tr命令是很好的选择。