如果我比较以下两个命令:
$ echo "HELLO" | tr A-Z C-ZA-B
$ echo "HELLO" | tr ..A-Z A-ZA-Z
他们都返回JGNNQ
。
为什么tr
这样行事,我得到相同的结果。
答案 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
。