作用:
通过使用tr,可以非常容易的实现sed的许多基本功能。它可以用一个字符来替换另一个字符,或者可以完全除去一些字符。你也可以用它来去除一些重复字符。
命令格式:
tr -c -d -s ["string1_to_translate_from"]["string2_to_translate_to"] < input-file
这里:
-c 用字符串1中字符集的补集替换此字符集,要求字符集为ASCII。
-d 删除字符串1中所有输入字符。
-s 删除所有重复出现字符序列,只保留第一个;即将重复出现字符串压缩为一个字符串。
input-file是要转换的文件名。虽然可以使用其他格式输入,但这种格式最常用。
字符范围:
指定字符串1或字符串2的内容时,只能使用单字符或字符串范围或列表。
[a-z] a-z内的字符组成的字符串。
[A-Z] A-Z内的字符组成的字符串。
[0-9] 数字串。
\octal 一个三位的八进制数,对应有效的ASCII字符。
[O*n] 表示字符O重复出现指定次数n。因此[O*2]匹配OO的字符串。
应用实例:
1.将文件file中出现的"abc"替换为"xyz"
1 cat file|tr "abc" "xyz">new_file
2.用tr命令,转换大小写
1 # 小写转大写 2 tr [a-z] [A-Z] <filename 3 #大写转小写 4 tr [A-Z] [a-z] <filename
3.把文件中的数字0-9替换为a-j
1 tr [0-9] [a-j] <filename
4.删除文件中出现的"Snail"字符
1 cat filename|tr -d "Snail">new_file
【注意】这里,凡是在file文件中出现的'S','n','a','i','l'字符都会被删除!而不是紧紧删除出现的"Snail”字符串。
5.删除文件file中出现的换行,制表符
1 cat file | tr -d "\n\t">new_file
6.删除“连续”的重复字母,只保留第一个
1 cat file | tr -s [a-zA-Z]>new_file
7.删除空行
1 cat file | tr -s "\n" > new_file
这里思考一下,为什么用-s,理解了还是挺容易想明白的
8.删除Windows文件“造成”的'^M'字符
1 cat file | tr -d "\r" >new_file 2 #或者可以 3 cat file |tr -s "\r" "\n">new_file
下面这个-s的解法也挺有意思,动动脑筋,理解下
9.用空格\040替换成制表符\011
1 cat file | tr -s "\011" "\040">new_file
10.把路径变量中的冒号":",替换成换行符"\n"
1 echo $PATH | tr ":" "\n"