“ tr A-Z C-ZA-B”和“ tr ..A-Z A-ZA-Z”相等吗?

时间:2019-01-28 08:16:14

标签: tr

如果我比较以下两个命令:

$ echo "HELLO" | tr A-Z C-ZA-B
$ echo "HELLO" | tr ..A-Z A-ZA-Z

他们都返回JGNNQ

为什么tr这样行事,我得到相同的结果。 是什么意思?

1 个答案:

答案 0 :(得分:2)

实质上,tr的作用是将SET1的字符替换为SET2的字符。想象SET1="abcdef"SET2="123654",然后进行以下翻译:

a->1    b->2   c->3
d->6    e->5   f->4

在第一个示例中,您将26个字符A-Z转换为C-ZAB,这意味着:

SET1=ABCDEFGHIJKLMNOPQRSTUVWXYZ
SET2=CDEFGHIJKLMNOPQRSTUVWXYZAB

您会注意到偏移量为2

第二种情况也是如此

SET1=..ABCDEFGHIJKLMNOPQRSTUVWXYZ
SET2=ABCDEFGHIJKLMNOPQRSTUVWXYZAB

第二组被截断以匹配第一组,因此最后您对字母的翻译完全相同,但是,您会发现与的区别。

$ echo "HELLO. IS ANYBODY OUT THERE." | tr A-Z C-ZA-B
JGNNQ. KU CPADQFA QWV VJGTG.
$ echo "HELLO. IS ANYBODY OUT THERE." | tr ..A-Z A-ZA-Z
JGNNQB KU CPADQFA QWV VJGTGB

请注意细微的差别,在第二种情况下,您还将转换为字母B