tr 用来从标准输入中通过替换或删除操作进行字元转换.tr 主要用于删除档案中控制字元或进行字元在转换. 使用 tr 时要转换两个字串: 字串 1 用于查询, 字串 2 用于处理各种转换.tr 刚执行时, 字串 1 中字元被对映到字串 2 中的字元, 然后转换操作开始.
语法:
tr  [-cdst] [SET1] [SET2] [>newfile] [newfile : 我们可以将结果汇入新的档案储存;
 /root/passwd.linux
这里的”r” 指的是 dos 的断行字元
# ll /etc/passwd /root/passwd*
-rw-r–r–. 1 root root 891 Apr  2 06:01 /etc/passwd
-rw-r–r–. 1 root root 911 Apr 17 10:46 /root/passwd
-rw-r–r–. 1 root root 891 Apr 17 10:47 /root/passwd.linux
处理过后, 发现档案大小与原来的/etc/passwd 就一致了.
 
范例 3: 删除空白行
删除空白行就是删除换行符/n
注意: 这些空白行上只有回车符, 没有空格符
# cat test.txt
I lovve linux!
 
Hello World!
 
Shell is worthy to been studied!
这里使用换行符的转义字元 n
注意: 若用-d, 则会删除所有的换行符, 如下:
# cat test.txt | tr -d [“n”]
I lovve linux!Hello World!Shell is worthy to been studied!
而此处用-s 删除多余的换行符呢, 如下:
[root@sqj2015 ~]# cat test.txt | tr -s [“n”]
I lovve linux!
Hello World!
Shell is worthy to been studied!
 
范例 4: 删除指定的字元
# cat test.txt
Monday 1:00
Tuessday 2:00
Wednesday 3:00
现在要删除处理星期之外的所有字元
-d 代表删除,[0-9] 代表所有的数字,[: ] 代表冒号和空格
# cat test.txt | tr -d “[0-9][: ]”
Monday
Tuessday
Wednesday
 
范例 5: 利用-c 进行补集的替换
有时候在文字中我们只知道要保留一些字元, 其他字元种类繁多, 就可以使用补集的替换
# cat test.txt
Monday 1:00
Tuessday 2:00
Wednesday 3:00
我们只需要星期, 则思路就是除了字母, 其他统统替换掉
这里,-c 用换行符替换掉除了字元外的所有字元,-s 删除多余的换行符
# cat test.txt | tr -cs “[a-z][A-Z]” “n”
Monday
Tuessday
Wednesday