tr 替换或删除字符

1.命令功能

tr 从标准输入中替换,压缩间隔或者删除字符并从定向到标准输出。

2.语法格式

tr  option  SET1  SET2

参数

参数说明

-c

取代所有SET1中字符串

-d

删除所有SET1中的字符串,不做替换

-s

把连续重复的字符串以单独一个字符表示

-t

先删除第SET1字符串较SET2字符串多出的字符

说明:

SET1:指定要转换或删除原字符集,当执行转换时,必须使用参数SET2中指定的目标字符串;但执行删除操作时,不需要SET2。

SET2:指定要转换成目标字符串。

3.使用范例

范例1 将输入的字符由大写转换成小写

[root@localhost ~]# echo "HELLO WELCOME TO LINUX"

HELLO WELCOME TO LINUX

[root@localhost ~]# echo "HELLO WELCOME TO LINUX" |tr 'A-Z' 'a-z'   #大写转换成小写

hello welcome to linux

'A-Z'和'a-z'都是集合,集合可以自己制定。例如‘a-z0-9’都是集合。

范例2 删除字符串

[root@localhost ~]# echo 'hello 123456 welcome 586 to linux' |tr -d '1-9'

hello  welcome  to linux

[root@localhost ~]# echo 'hello 123456 welcome 586 to linux' |tr -d 'a-z'

 123456  586 

范例4 把替换后的内容追加到新的文本中

[root@localhost ~]# echo "HELLO WELCOME TO LINUX" |tr 'A-Z' 'a-z' < test.txt

-bash: test.txt: 没有那个文件或目录

[root@localhost ~]# touch test.txt

[root@localhost ~]# echo "HELLO WELCOME TO LINUX" |tr 'A-Z' 'a-z' > test.txt

[root@localhost ~]# cat test.txt

hello welcome to linux

[root@localhost ~]# echo 'hello 123456 welcome 586 to linux' |tr -d 'a-z' >> test.txt

[root@localhost ~]# cat test.txt

hello welcome to linux

 123456  586 

范例3 压缩重复字符,每个字符只出现一次

[root@localhost ~]# echo "helllllo welcomeeeee to linuxxxxxx"  |tr -s 'lex'

helo welcome to linux

tr 可以使用的字符类集合

[:alnum:]:字母和数字

[:alpha:]:字母

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

[:digit:]:数字

[:graph:]:图形字符

[:lower:]:小写字母

[:print:]:可打印字符

[:punct:]:标点符号

[:space:]:空白字符

[:upper:]:大写字母

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

使用语法:

tr ‘[:lower:]’‘[:upper:]’

posted @ 2018-04-25 22:24  joe.chu  阅读(273)  评论(0编辑  收藏  举报