预备知识

tr [options] set1 set2

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

实战演练

  • 将输入字符由大写转换成小写
[root@shaofeng ~]# echo "HELLO WORLD" | tr 'A-Z' 'a-z'
hello world

工作原理

  • tr进行数字加密和解密
[root@shaofeng ~]# echo 12345 | tr "123456789" "0-9"
01234
[root@shaofeng ~]# echo 01234 | tr "0-9" "1-9"
12345
  • ROT13是一个著名的加密算法。一个函数完成加密解密
[root@shaofeng ~]# echo "tr came, tr saw, tr conquered." | tr 'a-zA-Z' 'n-za-mN-ZA-M'
ge pnzr, ge fnj, ge pbadhrerq.
[root@shaofeng ~]# echo ge pnzr, ge fnj, ge pbadhrerq. | tr 'a-zA-Z' 'n-za-mN-ZA-M'
tr came, tr saw, tr conquered.

补充内容

用tr删除字符:-d

[root@shaofeng ~]# echo 'Hello 1 World 2' | tr -d '1-2'
Hello  World

字符集补集:-c

[root@shaofeng ~]# echo 'Hello 1 World 2' | tr -d -c '1-2 \n'
 1  2

用tr压缩字符

[root@shaofeng ~]# echo 'Hello 1 World     2' | tr -s ' '
Hello 1 World 2

相加

[root@shaofeng ~]# cat sum.txt | echo $[ $( tr '\n' '+' ) 0 ]
15

字符类

  • upper
  • lower
  • space
  • punct
  • digit
  • graph
  • cntrl
  • alnum
  • alpha
  • xdigit
[root@shaofeng ~]# cat sum.txt | tr '[:lower:]' '[:upper:]'
1
2
3
4
5
HELLO WORLD
[root@shaofeng ~]# cat sum.txt
1
2
3
4
5
hello world

results matching ""

    No results matching ""