linux:tr的用法

可以把tr看作为一个简化的sed工具,tr表示为:translate。tr命令主要用于实现以下两个功能

替换操作的字符串转换。


删除操作的字符串转换,可以很容易的删除一些控制字符或者是空行。
tr命令能够实现的功能,都能够用sed命令来实现。但就具体的替换功能来说,tr用起来更容易,也比较简单。

 

一,命令格式
[html] view plaincopy
tr [option] ["string1"] ["string2"] < file 


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

 

[html] view plaincopy
[root@localhost client]# echo "hello world,root,2012" | tr -c "0-9" "*" 
*****************2012*  

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

[html] view plaincopy
[root@localhost client]# echo "hello world,root,2012" | tr "0-9" "*" 
hello world,root,****  

 
二,字符串的取值范围
指定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同时按下即可。

 

四,字符替换
这是tr的默认操作,先看下面的命令和输出

[html] view plaincopy
[root@localhost client]# echo "hello world" | tr "a-z" "A-Z" 
HELLO WORLD 
[root@localhost client]# echo "hello world" | tr "a-l" "A-Z" 
HELLo worLD 
[root@localhost client]# 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。

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

[html] view plaincopy
tr "a-z" "A-Z" < inputfile  

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

[html] view plaincopy
[root@localhost client]# echo "hello world,root" | tr -s "ao" 
hello world,rot 
[root@localhost client]# echo "hello world,root" | tr -s "lo" 
helo world,rot 
[root@localhost client]# echo "hello world,root" | tr -s "a-z" 
helo world,rot 
[root@localhost client]# 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字符集中的字符去掉,这里没有。


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

 

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

[html] view plaincopy
[root@localhost client]# echo "hello world,root" | tr -d "a-h" 
llo worl,root 
[root@localhost client]# echo "hello world,root,2012" | tr -d "a-z" 
 ,,2012 
[root@localhost client]# echo "hello world,root,2012" | tr -d "0-9" 
hello world,root, 

 

来源:http://www.cnblogs.com/fukajg/archive/2012/09/28/2706575.html

 

用法:tr [选项]... SET1 [SET2]
从标准输入中替换、缩减和/或删除字符,并将结果写到标准输出。

  -c, -C, --complement        首先补足SET1
  -d, --delete            删除匹配SET1 的内容,并不作替换
  -s, --squeeze-repeats    如果匹配于SET1 的字符在输入序列中存在连续的
                重复,在替换时会被统一缩为一个字符的长度
  -t, --truncate-set1        先将SET1 的长度截为和SET2 相等
      --help        显示此帮助信息并退出
      --version        显示版本信息并退出

SET 是一组字符串,一般都可按照字面含义理解。解析序列如下:

  \NNN    八进制值为NNN 的字符(1 至3 个数位)
  \\        反斜杠
  \a        终端鸣响
  \b        退格
  \f        换页
  \n        换行
  \r        回车
  \t        水平制表符
  \v        垂直制表符
  字符1-字符2    从字符1 到字符2 的升序递增过程中经历的所有字符
  [字符*]    在SET2 中适用,指定字符会被连续复制直到吻合设置1 的长度
  [字符*次数]    对字符执行指定次数的复制,若次数以 0 开头则被视为八进制数
  [:alnum:]    所有的字母和数字
  [:alpha:]    所有的字母
  [:blank:]    所有呈水平排列的空白字符
  [:cntrl:]    所有的控制字符
  [:digit:]    所有的数字
  [:graph:]    所有的可打印字符,不包括空格
  [:lower:]    所有的小写字母
  [:print:]    所有的可打印字符,包括空格
  [:punct:]    所有的标点字符
  [:space:]    所有呈水平或垂直排列的空白字符
  [:upper:]    所有的大写字母
  [:xdigit:]    所有的十六进制数
  [=字符=]    所有和指定字符相等的字符

仅在SET1 和SET2 都给出,同时没有-d 选项的时候才会进行替换。
仅在替换时才可能用到-t 选项。如果需要SET2 将被通过在末尾添加原来的末字符的方式
补充到同SET1 等长。SET2 中多余的字符将被省略。只有[:lower:] 和[:upper:]
以升序展开字符;在用于替换时的SET2 中以成对表示大小写转换。-s 作用于SET1,既不
替换也不删除,否则在替换或展开后使用SET2 缩减。

 

例子:

[root@localhost zhangy]# echo "TANK" |tr A-Z a-z   #大写字母转小写
tank

[root@localhost zhangy]# echo 'tank zhang' | tr a-z A-Z    #小写字线转大写
TANK ZHANG

[root@localhost zhangy]# cat aaa.txt       #原文件
aaa

bbb

[root@localhost zhangy]# cat aaa.txt|tr 'a' 'c'     #字母c替换字母a
ccc

bbb

[root@localhost zhangy]# cat aaa.txt|tr -d 'a'    #删除所有字母a


bbb

[root@localhost zhangy]# cat aaa.txt|tr -d '\n\t'   删除文件file中出现的换行'\n'、制表'\t'字符
aaabbb

[root@localhost zhangy]# cat aaa.txt|tr -s [a-zA-Z]   #删除重复的字母
a

b

[root@localhost zhangy]# cat aaa.txt|tr -s '\n'    #删除空行
aaa
bbb

[root@localhost zhangy]# cat aaa.txt |tr -s '\011' '\040'   #用空格符\040替换制表符\011
aaa

bbb

 

来源: http://l.51yip.com/search/tr

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: tr命令是Linux中的一个文本处理工具,用于对文本进行字符转换和替换操作。它可以将一个字符集中的字符替换为另一个字符集中的字符,也可以删除指定字符集中的字符。tr命令的基本语法为: tr [OPTION] SET1 [SET2] 其中,OPTION为可选参数,SET1为需要替换或删除的字符集,SET2为替换后的字符集。如果只指定SET1,则表示删除SET1中的字符。常用的选项包括: -c:取反,即替换SET1中没有出现的字符; -d:删除SET1中的字符; -s:压缩,即将SET1中连续出现的重复字符压缩为一个字符。 例如,将文件中的所有小写字母转换为大写字母: tr 'a-z' 'A-Z' < file.txt 将文件中的所有空格替换为下划线: tr ' ' '_' < file.txt 删除文件中的所有数字: tr -d '-9' < file.txt 压缩文件中的重复字符: tr -s 'a-z' < file.txt ### 回答2: Linux中的tr命令是一个十分强大且重要的命令,它主要用于对文本进行字符替换、删除或转换等操作。在Linux系统中,tr命令的用法和参数非常丰富,下面我们将详细介绍其常用的用法。 1.tr命令的基本语法 tr [option] set1 set2 其中,option为可选参数,set1和set2分别表示字符集1和字符集2。 2.tr命令的功能 tr命令的主要功能是对输入的字符集进行转换、删除、替换等操作。 3.tr命令的常用参数 (1)-d,表示删除字符 例如以下命令将从文本文件中删除所有的数字: $ cat file.txt | tr -d ‘0-9’ > newfile.txt (2)-s,表示压缩字符 例如以下命令将重复的字符压缩成一个字符: $ cat file.txt | tr -s ‘a’ ‘b’ > newfile.txt (3)-c,表示补全字符 例如以下命令将把除了a、b以外的其他字符都替换为’-‘: $ cat file.txt | tr -c ‘ab’ ‘-’ > newfile.txt (4)-t,表示删除字符 例如以下命令将把文本文件中的大写字母转换为小写字母: $ cat file.txt | tr -t ‘[:upper:]’ ‘[:lower:]’ > newfile.txt (5)-r,表示替换字符 例如以下命令将把文本文件中的a替换为b: $ cat file.txt | tr ‘a’ ‘b’ > newfile.txt 4.总结 以上便是Linuxtr命令的常用用法和参数。其中,tr命令十分有用,主要用于字符集的转换、删除、替换等操作,熟练掌握它的各种用法和参数,能够在Linux系统中快速、高效地完成各种文本处理任务。希望对大家有所帮助。 ### 回答3: tr命令是一个常见的Linux命令,可以用于转换或删除字符。tr命令的基本语法为:tr [OPTION]... SET1 [SET2]。其中,OPTION是可选的命令选项,SET1是要转换或删除的字符集合,SET2是用于替换字符集SET1的字符集合。 tr命令的一些常见选项和用法如下: 1. -d选项:删除指定字符,例如:tr -d 'aeiou'将删除输入文本中的所有元音字母。 2. -s选项:压缩字符集,例如:tr -s ' '将多余的空格压缩成一个空格。 3. -c选项:取反字符集,例如:tr -c 'a-z' '0-9'将所有非小写字母替换为数字。 4. SET选项:SET可以是字符范围或字符列表,例如:tr 'a-z' 'A-Z'将小写字母转换为大写字母。 5. SET1和SET2的长度不相等:如果SET1和SET2的长度不相等,tr命令会将SET1中的字符用SET2中的最后一个字符进行替换。例如:tr 'abc' '12'将'a'转换为'1','b'转换为'2','c'转换为'2'。 6. 文件重定向:tr命令还可以使用文件重定向,例如:tr 'a-z' 'A-Z' < input.txt > output.txt将input.txt中的小写字母转换为大写字母,并将结果输出到output.txt中。 总之,tr命令是一个非常有用的转换和删除字符的工具,可以轻松地完成一些文本处理任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值