tr命令

tr可以对来自标准输入的内容进行字符替换、字符删除以及重复字符压缩。

 

tr只能通过stdin(标准输入)接收输入(无法通过命令行参数接收)。其调用格式如下: 

tr [options] set1 set2

来自stdin的输入字符会按照位置从set1映射到set2(set1中的第一个字符映射到set2中的第一个字符,以此类推),然后将输出写入stdout(标准输出)。

set1和set2是字符类或字符组。如果两个字符组的长度不相等,那么set2会不断复制其最后一个字符,直到长度与set1相同。如果set2的长度大于set1,那么在set2中超出set1长度的那部分字符则全部被忽略。 

 

字符替换

1、将set1中的字符替换为小写字符

执行:echo "a1b2c3" | tr 'a-z' 'A-Z'

输出:A1B2C3

 

2、将不在set1的字符替换成@

执行:echo "a1b2c3" | tr -c '0-9 \n' '@'

输出:@1@2@3

 

3、加密和解密

ROT13是一个著名的加密算法。在ROT13算法中,字符会被移动13个位置,因此文本加密和解密都使用同一个函数:

加密:echo "root" | tr 'a-zA-Z' 'n-za-mN-ZA-M'

加密后的字符:ebbg

解密: echo "ebbg" | tr 'a-zA-Z' 'n-za-mN-ZA-M'

解密后的字符:root

 

字符删除

1、删除set1中的字符

执行:echo "abc123" | tr -d '0-9'

输出:abc

 

2、删除不在set1中的字符

执行:echo "a1b2c3" | tr -d -c '0-9 \n'

输出:123

 

重复字符压缩

执行:echo "aa11bb22" | tr -s 'a-z'

输出:a11b22

 

字符类

tr可以将不同的字符类作为集合使用,所支持的字符类如下所示。

 alnum:字母和数字。

 alpha:字母。

 cntrl:控制(非打印)字符。

 digit:数字。

 graph:图形字符。

 lower:小写字母。

 print:可打印字符。

 punct:标点符号。

 space:空白字符。

 upper:大写字母。

 xdigit:十六进制字符。 

执行:echo "abc123" | tr '[:lower:]' '[:upper:]'

输出:ABC123

posted @ 2019-08-22 14:26  李凡金牛  阅读(343)  评论(0编辑  收藏  举报