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:]’