tr(translate)命令详解
功能:转换字符。如将大写字符转换成小写。
语法:tr 选项 [字符串1] [字符串2]
tr的行为如同过滤器,从标准输入读取字符,再将结果写到标准输出。任何输入字符只要出如今字符串1列表中,就会置换成字符串2里相应的字符
注意:tr命令不接受指定的文件参数,而只是对标准输入进行转换
经常使用选项:
-c 用字符串1中字符集的补集替换此字符集,要求字符集为ASCII。
-d 从标准输入删除源字符里所列的字符,而不是转换它们
-s 浓缩重复的字符。若是标准输入中连续重复出现源字符里所列的字符,将其浓缩成一个。
经常使用的字符范围:
指定字符串1或字符串2的内容时,只能使用单字符或字符串范围或列表。
[a-z] a-z内的字符组成的字符串。
[A-Z] A-Z内的字符组成的字符串。
[0-9] 数字串。
\octal 一个三位的八进制数,对应有效的ASCII字符。
[A*n] 表示字符A重复出现指定次数n。所以[A*3]匹配AAA的字符串
[:alnum:] :全部字母字符与数字
[:alpha:] :全部字母字符
[:blank:] :全部水平空格
[:cntrl:] :全部控制字符
[:digit:] :全部数字
[:graph:] :全部可打印的字符(不包含空格符)
[:lower:] :全部小写字母
[:print:] :全部可打印的字符(包含空格符)
[:punct:] :全部标点字符
[:space:] :全部水平与垂直空格符
[:upper:] :全部大写字母
[:xdigit:] :全部 16 进位制的数字。
特定控制字符的不一样表达方式
速记符
|
含义
|
八进制方式
|
备注
|
\a
|
Ctrl-G铃声
|
007
|
|
\b
|
Ctrl-H退格符
|
010
|
|
\f
|
Ctrl-L 走行换页
|
014
|
|
\n
|
Ctrl-J 新行
|
012
|
|
\r
|
Ctrl-M 回车
|
015
|
|
\t
|
Ctrl-I tab键
|
011
|
|
\v
|
Ctrl-X
|
030
|
|
举例说明
(1)删除字符串
tr -d ‘\r ’ < test.txt | sort > test-new.txt
删除test.txt文件中的回车符,排序后将结果输出到test-new.txt文件中
[root@server ~]# echo xiaoguang | tr -d "a" #输出xiogung
[root@server ~]# echo xiaoguang | tr -d "xiao" #输出gung
注意:tr是将字符串1的各个字符串单独处理的
(2)删除重复字符串
echo aabbccccddddd | tr -s '[a-z]' #输出abcd
(3)替换大小写
现有有个文件word.txt,内容以下:
[root@server ~]# cat word.txt
abCDEf
如今使用tr把word.txt中的小写都变成大写
[root@server ~]# tr '[a-z]' '[A-Z]' < word.txt
ABCDEF
(4)删除空行
[root@server tr]# tr -s '\n' < test.txt