良许Linux教程网 干货合集 通过tr命令处理文本

通过tr命令处理文本

tr的英文全称是“ transform ”,即转换的意思。该命令的作用是一种可将字符进行替换、压缩、删除,他可以将一组字符转换成另一组字符。tr他只能从标准输入中读取数据,因此,tr要么将输入文件重定向到标准输入,要么从管道读入数据。

命令格式

tr [option] ["string1"] ["string2"

常用的选项有:

默认选项。就是没有任何选项的时候,tr默认为替换操作,就是将string1在文件中出现的字符替换为string2中的字符,这里要注意的是替换关系。 -c选项,用string1中字符的补集替换string1,这里的字符集为ASCII。 -d选项,删除文件中所有在string1中出现的字符。 -s选项,删除文件中重复并且在string1中出现的字符,只保留一个。 -c选项在使用时,只是将string1替换为现在的补集,如在使用

inuxidc@Ubuntu:~/linuxidc.com$ echo "hello world,linuxidc.com,2019" | tr -c "0-9" "*"
*************************2019*
tr文本处理命令的使用方法tr文本处理命令的使用方法
tr文本处理命令的使用方法tr文本处理命令的使用方法
linuxidc@ubuntu:~/linuxidc.com$ echo "hello world,linuxidc.com,2019" | tr "0-9" "*"
hello world,linuxidc.com,****
tr文本处理命令的使用方法tr文本处理命令的使用方法

可以看出,我们使用0-9,添加-c选项后,会把0-9替换为其补集,这时补集自然不包含0-9,而包含很多其它的字符,接下来就把所有的其它字符都替换成*号,但不包含数字。

字符串的取值范围

指定string或string2的内容时,只能使用单字符或字符串范围或列表。 [a-z] a-z内的字符组成的字符串。 [A-Z] A-Z内的字符组成的字符串。 [0-9] 数字串。 \octal 一个三位的八进制数,对应有效的ASCII字符。 [On] 表示字符O重复出现指定次数n。因此[O2]匹配OO的字符串。

控制字符的不同表达方式

速记符 含义 八进制方式 \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 注意这些控制字符,如果想在linux下输入,如我们可能需要输入^M这种字符,只需ctrl+V+M同时按下即可。

字符替换

linuxidc@ubuntu:~/linuxidc.com$ echo "hello world,www.linuxidc.com" | tr "a-z" "A-Z"
HELLO WORLD,WWW.LINUXIDC.COM
linuxidc@ubuntu:~/linuxidc.com$ echo "hello world,www.linuxidc.com" | tr "a-l" "A-Z"
HELLo worLD,www.LInuxIDC.Com
linuxidc@ubuntu:~/linuxidc.com$ echo "hello world,www.linuxidc.com" | tr "a-z" "A-H"
HEHHH HHHHD,HHH.HHHHHHDC.CHH
tr文本处理命令的使用方法tr文本处理命令的使用方法

第一行输出就是将小写换成大写。 第二行输出将小写中的a-l分别换成A-L,而将小写中的l以后的字符都不替换。 第三行输出将小写中的a-h换成A-H,而h以后的字符都换成H,因为后者的替换空间没有前面的字符空间大,所以就重复后面的H,相当于后面的字符是A-HHH……HHHHH。

如果我们想要进行大小写转换,可以按下面的输入:

tr "a-z" "A-Z" 

去除重复字符

这个时候,所用的选项是-s选项,如:

linuxidc@ubuntu:~/linuxidc.com$ echo "root,hello world,linuxidc.com" | tr -s "ao"  
rot,hello world,linuxidc.com
linuxidc@ubuntu:~/linuxidc.com$ echo "root,hello world,linuxidc.com" | tr -s "lo"  
rot,helo world,linuxidc.com
linuxidc@ubuntu:~/linuxidc.com$ echo "root,hello world,linuxidc.com" | tr -s "a-z"
rot,helo world,linuxidc.com
linuxidc@ubuntu:~/linuxidc.com$ echo "root,hello world,linuxidc.com" | tr -s "0-9"
root,hello world,linuxidc.com
tr文本处理命令的使用方法tr文本处理命令的使用方法

第一行表示将输入字符串中的包含在”ao”字符集中的重复字符去掉,只留一个。因为”hello world,linuxidc.com”,只有o满足条件,所以将linuxidc.com变成rot,把中间的两个o变成一个。 第二行将hello和linuxidc.com两个字符都压缩了。 第三行表示将a-z中的除复字符都去掉。 第三行表示将字符串中的重复的且重复字符在0-9字符集中的字符去掉,这里没有。

如果我们想要去掉空行,可以这样操作:

tr -s "\n" "\012" 

就是将重复的换行符去掉,只留一个。

删除字符

-d选项和-s选项类似,只不过-d选项会删除所有出现的字符。

linuxidc@ubuntu:~/linuxidc.com$ echo "root,hello world,linuxidc.com" | tr -d "a-h"  
root,llo worl,linuxi.om
linuxidc@ubuntu:~/linuxidc.com$ echo "root,hello world,linuxidc.com,2019" | tr -d "a-z"  
, ,.,2019
linuxidc@ubuntu:~/linuxidc.com$ echo "root,hello world,linuxidc.com,2019" | tr -d "0-9"  
root,hello world,linuxidc.com,
tr文本处理命令的使用方法tr文本处理命令的使用方法

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

img
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部