tr命令
作用
tr命令用于对字符集的替换,删除,去重复等
语法:
tr [–c/d/s/t] [SET1] [SET2]
SET1: 字符集1
SET2:字符集2
-c:complement,用SET2替换SET1中没有包含的字符
-d:delete,删除SET1中所有的字符,不转换
-s: squeeze-repeats,压缩SET1中重复的字符
-t: truncate-set1,将SET1用SET2转换,一般缺省为-t
常用的例子
- 去除重复的的字符集 -s
[jeck@localhost ~]$ echo "aabbccdd1234121123" | tr -s 'abcd1234'
abcd123412123
或者
[jeck@localhost ~]$ echo "aabbccdd1234121123" | tr -s '[a-z][0-9]'
abcd123412123
'A-Z' 和 'a-z'都是集合,集合是可以自己制定的,例如:'ABD-}'、'bB.,'、'a-de-h'、'a-c0-9'都属于集合,集合里可以使用' '、' ',可以可以使用其他ASCII字符。
- 把小写字母转换成大写
[jeck@localhost ~]$ echo "ni hao fuzj" | tr -t [a-z] [A-Z]
NI HAO FUZJ
- 删除某个字符
[jeck@localhost ~]$ echo "helow goole " | tr -d go
helw le
注意:-d后面的go。会把前面所有包含g和o的字符删掉
- 删除空白行
[jeck@localhost ~]$ cat test
bbb
aaa
cccccccccc
dddddddddd
aaaaaa
aaa
cccccc
[jeck@localhost ~]$ cat test | tr -s " "
bbb
aaa
cccccccccc
dddddddddd
aaaaaa
aaa
cccccc
注意:此处用-s删除了多余的换行符,如果用-d,则会删除所有的换行
[jeck@localhost ~]$ cat test | tr -d " "
bbbaaaccccccccccddddddddddaaaaaaaaacccccc
- 把空格转换成换行符
[jeck@localhost ~]$ echo "aa bb cc" | tr ' ' ' '
aa
bb
cc
如果有多个空格的话,需要删除多余的空格
[jeck@localhost ~]$ echo "aa bb cc" | tr ' ' ' '
aa
bb
cc
[jeck@localhost ~]$ echo "aa bb cc" | tr -s ' ' ' '
aa
bb
cc
补充:
以上事例都是转换的字符。tr还可以直接使用字符类
[:alnum:]:字母和数字
[:alpha:]:字母
[:cntrl:]:控制(非打印)字符
[:digit:]:数字
[:graph:]:图形字符
[:lower:]:小写字母
[:print:]:可打印字符
[:punct:]:标点符号
[:space:]:空白字符
[:upper:]:大写字母
[:xdigit:]:十六进制字符
使用方式:
- 把小写转换为大写
[jeck@localhost ~]$ echo "aa bb cc" | tr '[:lower:]' '[:upper:]'
AA BB CC