今天做练习,本来对tr知道一些,可是对tr的替换原理有点晕
题目如下:
加密: echo 123456 | tr '0-9' '9876543210' 此命令会打印出87654
解密 : echo 87654 | tr '9876543210' '0-9' 此命令会打印123456
它替换的原理感觉是根据下表进行替换的,不知倒对不对?
求大牛解答,谢谢~
tr 转换命令 的工作原理
-
- 帖子: 12
- 注册时间: 2014-07-04 22:01
- 系统: ubuntu
- astolia
- 论坛版主
- 帖子: 6703
- 注册时间: 2008-09-18 13:11
Re: tr 转换命令 的工作原理
建议查man tr,里面解释的非常清楚
在你的例子里,'0-9'就是CHAR1-CHAR2这种形式,从0按编码顺序递增到9,也就是等价于'0123456789'
tr '0-9' '9876543210'等价于tr '0123456789' '9876543210'。也就是说,如果输入中出现了SET1第一个位置的0,就换成SET2第一个位置的9,出现了SET1第二个位置的1,就换成SET2第二个位置的8,以此类推。
SYNOPSIS
tr [OPTION]... SET1 [SET2]
tr不带OPTION参数的时候,就是把标准输入中出现在SET1中的字符用SET2中对应位置的字符替换。当SET2长度小于SET1时,相当于把SET1剩下的字符全部用SET2最后一个字符替换CHAR1-CHAR2
all characters from CHAR1 to CHAR2 in ascending order
[CHAR*]
in SET2, copies of CHAR until length of SET1
在你的例子里,'0-9'就是CHAR1-CHAR2这种形式,从0按编码顺序递增到9,也就是等价于'0123456789'
tr '0-9' '9876543210'等价于tr '0123456789' '9876543210'。也就是说,如果输入中出现了SET1第一个位置的0,就换成SET2第一个位置的9,出现了SET1第二个位置的1,就换成SET2第二个位置的8,以此类推。