tr命令

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

 

常用的例子

  1. 去除重复的的字符集  -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'都属于集合,集合里可以使用'\n'、'\t',可以可以使用其他ASCII字符。

 

  1. 把小写字母转换成大写

[jeck@localhost ~]$ echo "ni hao fuzj" | tr -t [a-z] [A-Z]

NI HAO FUZJ

  1. 删除某个字符

[jeck@localhost ~]$ echo "helow goole " | tr -d go

helw le

注意:-d后面的go。会把前面所有包含g和o的字符删掉

 

  1. 删除空白行

[jeck@localhost ~]$ cat test

bbb

 

 

aaa

cccccccccc

 

dddddddddd

 

aaaaaa

aaa

cccccc

[jeck@localhost ~]$ cat test | tr -s "\n"

bbb

aaa

cccccccccc

dddddddddd

aaaaaa

aaa

cccccc

注意:此处用-s删除了多余的换行符,如果用-d,则会删除所有的换行

[jeck@localhost ~]$ cat test | tr -d "\n"

bbbaaaccccccccccddddddddddaaaaaaaaacccccc

  1. 把空格转换成换行符

[jeck@localhost ~]$ echo "aa bb cc" | tr ' ' '\n'

aa

bb

cc

如果有多个空格的话,需要删除多余的空格

[jeck@localhost ~]$ echo "aa   bb cc" | tr ' ' '\n'

aa

 

 

bb

cc

[jeck@localhost ~]$ echo "aa   bb cc" | tr -s ' ' '\n'

aa

bb

cc

补充:

以上事例都是转换的字符。tr还可以直接使用字符类

[:alnum:]:字母和数字

[:alpha:]:字母

[:cntrl:]:控制(非打印)字符

[:digit:]:数字

[:graph:]:图形字符

[:lower:]:小写字母

[:print:]:可打印字符

[:punct:]:标点符号

[:space:]:空白字符

[:upper:]:大写字母

[:xdigit:]:十六进制字符

 

使用方式:

  1. 把小写转换为大写

[jeck@localhost ~]$ echo "aa bb cc" | tr '[:lower:]' '[:upper:]'

AA BB CC

 

posted @ 2018-04-07 18:54  Fuzengjie  阅读(223)  评论(0编辑  收藏  举报