Linux命令之tr

/ Command / 没有评论 / 1400浏览

介绍

tr命令可以对来自标准输入的字符进行替换、压缩和删除。它可以将一组字符变成另一组字符,经常用来编写优美的单行命令,作用很强大

参数

-c或——complerment:取代所有不属于第一字符集的字符;
-d或——delete:删除所有属于第一字符集的字符;
-s或--squeeze-repeats:把连续重复的字符以单独一个字符表示;
-t或--truncate-set1:先删除第一字符集较第二字符集多出的字符。

将输入字符由大写转换为小写

root@pa3:~# echo LIJINGHUA |tr "A-Z" "a-z"
lijinghua

'A-Z' 和 'a-z'都是集合,集合是可以自己制定的,例如:'ABD-}'、'bB.,'、'a-de-h'、'a-c0-9'都属于集合,集合里可以使用'\n'、'\t',可以可以使用其他ASCII字符

删除字符

root@pa3:~# echo LIJINGHUA |tr "A-Z" "a-z" |tr -d 'li'
jnghua

制表符替换为空格

root@pa3:~# cat file.txt 
	kkk
  kkkk
kkkkk
	iiiiii
root@pa3:~# cat file.txt | tr  '\t' ' '         #最后这个单引号,得是一个空格
 kkk
  kkkk
kkkkk
 iiiiii

从输入文本中将不在补集中的所有字符删除

字符集补集

root@pa3:~# echo aa.,a 1 b#$bb 2 c*/cc dd3d 4 | tr -d -c '0-9 \n'
 1  2  3 4

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

root@pa3:~# echo me is llllllliiiiijjjinghuaaaaa |tr -s 'lia'
me is lijjjinghua

使用tr做数字相加操作

root@pa3:~# echo 1 2 3 4 5 6 7 8 9 | xargs -n1
1
2
3
4
5
6
7
8
9

root@pa3:~# echo 1 2 3 4 5 6 7 8 9 | xargs -n1 |echo $[ $(tr '\n' '+') 0]
45

tr可以使用的字符类:

[:alnum:]:字母和数字
[:alpha:]:字母
[:cntrl:]:控制(非打印)字符
[:digit:]:数字
[:graph:]:图形字符
[:lower:]:小写字母
[:print:]:可打印字符
[:punct:]:标点符号
[:space:]:空白字符
[:upper:]:大写字母
[:xdigit:]:十六进制字符
tr '[:lower:]' '[:upper:]'

示范

root@pa3:~# echo ME  IS LIJINGHUA | tr '[:upper:]' '[:lower:]'
me is lijinghua