tr 转换命令 的工作原理

sh/bash/dash/ksh/zsh等Shell脚本
回复
Red_Hair
帖子: 12
注册时间: 2014-07-04 22:01
系统: ubuntu

tr 转换命令 的工作原理

#1

帖子 Red_Hair » 2014-07-11 16:07

今天做练习,本来对tr知道一些,可是对tr的替换原理有点晕

题目如下:
加密: echo 123456 | tr '0-9' '9876543210' 此命令会打印出87654
解密 : echo 87654 | tr '9876543210' '0-9' 此命令会打印123456
它替换的原理感觉是根据下表进行替换的,不知倒对不对?
求大牛解答,谢谢~
头像
astolia
论坛版主
帖子: 6703
注册时间: 2008-09-18 13:11

Re: tr 转换命令 的工作原理

#2

帖子 astolia » 2014-07-11 20:20

建议查man tr,里面解释的非常清楚
SYNOPSIS
tr [OPTION]... SET1 [SET2]
CHAR1-CHAR2
all characters from CHAR1 to CHAR2 in ascending order

[CHAR*]
in SET2, copies of CHAR until length of SET1
tr不带OPTION参数的时候,就是把标准输入中出现在SET1中的字符用SET2中对应位置的字符替换。当SET2长度小于SET1时,相当于把SET1剩下的字符全部用SET2最后一个字符替换

在你的例子里,'0-9'就是CHAR1-CHAR2这种形式,从0按编码顺序递增到9,也就是等价于'0123456789'
tr '0-9' '9876543210'等价于tr '0123456789' '9876543210'。也就是说,如果输入中出现了SET1第一个位置的0,就换成SET2第一个位置的9,出现了SET1第二个位置的1,就换成SET2第二个位置的8,以此类推。
回复