首页 > 代码库 > 8. tr

8. tr

tr 可以对来自标准输入的字符进行替换,删除,以及压缩。它可以将一组字符变成另一组字符,因而通常也被称为转换命令。调用格式为: tr [option] set1 set2

将来自stdin的输入字符从set1映射到set2,并将其输出写入stdout,  set1 和 set2 是字符类或字符集。 如果两个字符集的长度不相等,那么set2会不断的重复其最后一个字符,直到长度与set1相同。如果set2的长度大于set1,那么在set2中超出set1长度的那部分字符则全部被忽略。

将输入字符由大小转换成小写:echo "HELLO WORLD" | tr ‘A-Z’ ‘a-z’

通过tr中使用集合的概念,我们可以轻松的将字符从一个集合映射到另一个集合中。

tr进行数字加密和解密:

echo 12345 | tr ‘0-9‘ ‘9876543210‘

87654 已加密

tr 将制表符转换成空格

cat text | tr ‘\t‘ ‘ ‘

补充内容:

1.用tr 删除字符

tr有一个选项-d,可以通过指定需要被删除的字符集合,将出现在stdin中的特定字符清除掉。

cat file.txt | tr -d ‘0-9‘  将stdin中的数字删除并打印出来

2.字符集补集。

利用选项-c来使用set1的补集。 -c [set]等同与定义了一个集合(补集),这个集合的字符不包含

在[set]中,最典型的用法是从输入文本中将不再补集中的所有字符全部删除。

echo hello 1 char 2 next 3 | tr -d -c ‘0-9 \n‘

3. 用tr 压缩字符

连续的重复的字符应该被压缩成单个字符,而经常需要进行的一项任务就是压缩空白符。

tr -s ‘[set]‘ 压缩输入的重复字符

4.字符类

tr可以像使用集合一样使用各种不同字符类,字符类有:

alnum 字母和数字

alpha 字母

cntrl  控制字符

digit 数字

graph 图形字符

lower 小写字母

print: 可打印字符

punct 标点符号

space 空白字符

upper 大写字母

xdigit 十六进制字符。

tr [:class:] [:class:]

tr ‘:lower:‘ ‘:upper:‘

8. tr