Linux下的tr编辑器命令详解

通过使用 tr,您可以非常容易地实现 sed 的许多最基本功能。您可以将 tr 看作为 sed 的(极其)简化的变体:它可以用一个字符来替换另一个字符,或者可以完全除去一些字符。您也可以用它来除去重复字符。这就是所有 tr 所能够做的。

命令格式

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

[[email protected] ~]# echo "hello world,root,2012" | tr -c "0-9" "*"
*****************2012*[[email protected] ~]# echo "hello world,root,2012" | tr "0-9" "*"
hello world,root,****
[[email protected] ~]# 

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

字符串的取值范围
指定string或string2的内容时,只能使用单字符或字符串范围或列表。
[a-z] a-z内的字符组成的字符串。
[A-Z] A-Z内的字符组成的字符串。
[0-9] 数字串。
\octal 一个三位的八进制数,对应有效的ASCII字符。
[O*n] 表示字符O重复出现指定次数n。因此[O*2]匹配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同时按下即可。

字符替换

[[email protected] ~]# echo "hello world" | tr "a-z" "A-Z"
HELLO WORLD
[[email protected] ~]# echo "hello world" | tr "a-l" "A-Z"
HELLo worLD
[[email protected] ~]# echo "hello world" | tr "a-z" "A-H"
HEHHH HHHHD

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

如果我们想要进行大小写转换,可以按下面的输入:
tr "a-z" "A-Z" < inputfile

去除重复字符
这个时候,所用的选项是-s选项,如:

[[email protected] ~]# echo "hello world,root" | tr -s "ao"
hello world,rot
[[email protected] ~]# echo "hello world,root" | tr -s "lo"
helo world,rot
[[email protected] ~]# echo "hello world,root" | tr -s "a-z"
helo world,rot
[[email protected] ~]# echo "hello world,root" | tr -s "0-9"
hello world,root

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

如果我们想要去掉空行,可以这样操作:
tr -s "\n" < inputfile 或者 tr -s "\012" <inputfile // 这两个是一样的。  
就是将重复的换行符去掉,只留一个。

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

[[email protected] ~]# echo "hello world,root" | tr -d "a-h"
llo worl,root
[[email protected] ~]# echo "hello world,root,2012" | tr -d "a-z"
 ,,2012
[[email protected] ~]# echo "hello world,root,2012" | tr -d "0-9"
hello world,root,
时间: 2024-12-22 20:41:16

Linux下的tr编辑器命令详解的相关文章

Linux下的压缩解压缩命令详解

zip -r myfile.zip ./*将当前目录下的所有文件和文件夹全部压缩成myfile.zip文件,-r表示递归压缩子目录下所有文件. 2.unzipunzip -o -d /home/sunny myfile.zip把myfile.zip文件解压到 /home/sunny/-o:不提示的情况下覆盖文件:-d:-d /home/sunny 指明将文件解压缩到/home/sunny目录下: 3.其他zip -d myfile.zip smart.txt删除压缩文件中smart.txt文件z

Linux下的压缩解压缩命令详解及实例

实例:压缩当前目录的内容为xxx.zip文件 zip -r xxx.zip ./* 解压zip文件到当前目录 unzip filename.zip ============================ 另:有些服务器没有安装zip包执行不了zip命令,但基本上都可以用tar命令的,实例如下: tar -zcvf /home/zdzlibs.tar.gz /home/zdz/java/zdzlibs/ ============================ linux zip命令 zip -

linux下压缩和解压命令详解

tar-c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个.下面的参数是根据需要在压缩或解压档案时可选的. -z:有gzip属性的-j:有bz2属性的-Z:有compress属性的-v:显示所有过程-O:将文件解开到标准输出 下面的参数-f是必须的 -f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名. # tar -cf all.tar *.jpg

Linux下tar压缩解压缩命令详解

tar -c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个.下面的参数是根据需要在压缩或解压档案时可选的. -z:有gzip属性的-j:有bz2属性的-Z:有compress属性的-v:显示所有过程-O:将文件解开到标准输出 下面的参数-f是必须的 -f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名. # tar -cf all.tar *.jp

Linux下shell中case命令详解(常规的break、无条件继续和有条件继续)

linux下shell中的case名字和C/C++中的switch类似,但是shell中的case更强大和复杂. 1.强大主要体现在:shell中case中的关键字可以是字符串类型,而每一项中可以包含正则表达式. 2.复杂主要体现在:shell中case的每一个项后有三个选择:break(常规的break).unconditional follow up(无条件继续)和conditional follow up(有条件继续). 这篇文章的重点是上面的第2点. case的无条件继续和有条件继续是b

linux下find和grep命令详解

在linux下面工作,有些命令能够大大提高效率.本文就向大家介绍find.grep命令,他哥俩可以算是必会的linux命令,我几乎每天都要用到他们.本文结构如下: find命令 find命令的一般形式 find命令的常用选项及实例 find与xargs grep命令 grep命令的一般形式 grep正则表达式元字符集(基本集) grep命令的常用选项及实例 1.find命令 find命令是一个无处不在命令,是linux中最有用的命令之一.find命令用于:在一个目录(及子目录)中搜索文件,你可以

linux下rpm软件包管理命令详解

1.linux下软件的基本概念 程序需要用到的重要文件:配置文件,指令,库文件,帮助信息 /etc, /bin, /sbin, /lib,/usr/share/man 1.1.系统启动需用到的程序路径,必须在根文件系统的分区上 /etc, /bin, /sbin, /lib,/usr/share/man 1.2.系统启动后需用到的操作作系统核心功能或必要功能程序路径 /etc,/usr/bin,/usr/sbin/,/usr/lib,/usr/share/man 1.3.用户安装的第三方程序所需

Linux下的scp拷贝命令详解

相同Linux系统中对文件复制拷贝可以用CP命令: cp [options] source dest cp [options] source... directory 说明:将一个档案拷贝至另一档案,或将数个档案拷贝至另一目录. -a 尽可能将档案状态.权限等资料都照原状予以复制. -r 若 source 中含有目录名,则将目录下之档案亦皆依序拷贝至目的地. -f 若目的地已经有相同档名的档案存在,则在复制前先予以删除再行复制. 不同的Linux之间copy文件常用有3种方法: 第一种就是ftp

linux下last与lastb命令详解

在linux系统中,last与lastb命令用来列出目前与过去登录系统的用户相关信息.指令英文原义: last, lastb - show listing of last logged in users 单独执行last指令时,它会读取位于/var/log/wtmp的文件,并把该给文件的内容记录的登录系统的用户名单全部显示出来. 单独执行lastb指令,它会读取位于/var/log/btmp的文件,并把该文件内容记录的登入系统失败的用户名单,全部显示出来. 第一列信息:用户名,或者显示reboo