tr命令(translate)用来对来自标准输入的内容进行字符替换、字符删除以及重复字符压缩。
tr命令:
tr [option] set1 set2
-d:删除
-c:字符集补集
-s:压缩字符
将来自stdin的输入字符从set1映射到set2,然后将输出写入stdout(标准输出)。
set1<>set2:则set2会重复最后一个符号,直至与set1等长
set2>set1:则set2中超出set1长度会被忽略
1.输入字符小写转大写
[root@nginx ~]# echo 'hello world' | tr 'A-Z' 'a-z'
hello world
[root@nginx ~]# echo 'hello world' | tr 'a-z' 'A-Z'
HELLO WORLD
‘A-Z’ 和 'a-z’都是集合。
‘ABD-}’、‘aA.,’、'a-ce-x’以及’a-c0-9’等均是合法的集合。
2.tr进行数字加密和解密
[root@nginx ~]# echo 12345 | tr '0-9' '9876543210'
87654 #已加密
[root@nginx ~]# echo 87654 | tr '9876543210' '0-9'
12345 #已解密
3.tr还可以用来将制表符转换成空格:
# tr '\t' ' ' < file.txt
4.使用tr删除字符
tr -d 通过指定需要删除的字符集合。
[root@nginx ~]# echo 'hello 123 world 456' | tr -d '0-9'
hello world
5.字符集补集
[root@nginx ~]# echo 'hello 1 char 2 next 4' | tr -d -c '0-9 \n'
1 2 4
[root@nginx ~]# echo 'hello 1 char 2 next 4' | tr -d -c 'a-z \n'
hello char next
补集中包含了除数字、空格字符和换行符之外的所有字符。因为指定了-d,所以这些字符全部都被删除。
6.压缩字符
[root@nginx ~]# echo 'hello 1 char 3' | tr -s ' '
hello 1 char 3