使用rot13和tr命令获得加密的电子邮件地址

问题描述 投票:25回答:4

我在互联网上阅读了很多关于'tr'命令用法的教程。但是,我无法理解如何使用shell脚本加密电子邮件地址使用rot13来移动字符。任何人都可以提供链接或示例吗?

shell
4个回答
64
投票

不确定你想如何使用它,但这是一个让你入门的基本例子:

echo '[email protected]' | tr 'A-Za-z' 'N-ZA-Mn-za-m'

为了简化操作,您可以在tr文件中为.bashrc命令添加别名:

alias rot13="tr 'A-Za-z' 'N-ZA-Mn-za-m'"

现在你可以打电话:

echo '[email protected]' | rot13

5
投票

红宝石(1.9+)

$ ruby -ne 'print $_.tr( "A-Za-z", "N-ZA-Mn-za-m") ' file

蟒蛇

$ echo "test" | python -c 'import sys; print sys.stdin.read().encode("rot13")'

5
投票

确实是tr的完美任务。这应该做你想要的:

tr 'A-Za-z' 'N-ZA-Mn-za-m'

第一组中的每个字符将替换为第二组中的相应字符。例如。 A替换为N,B替换为O等。然后同样为小写字母。所有其他字符将保持不变。

注意缺少[],你通常可能会在那里看到它们。这是因为tr按字面意思对待方括号,而不是范围表达式。因此,例如,tr -d '[A-Z]'将删除大写字母和方括号。如果你想保留括号,请使用tr -d 'A-Z'

$ echo "foo BAR [baz]" | tr -d '[A-Z]'
foo  baz
$ echo "foo BAR [baz]" | tr -d 'A-Z'
foo  [baz]

对于字符类也是如此。例如。 tr -d '[[:lower:]]'可能是一个错误,应该是tr -d '[:lower:]'

但是,在像这样的幸运情况下,无论如何你都可以包括括号!例如,tr "[a-z]" "[A-Z]"意外地起作用,因为第一组中的方括号被第二组中的相同方括号替换,但实际上这是一个不好的习惯。请改用tr "a-z" "A-Z"


1
投票

同时做ROT13(字母)和ROT5(数字):

tr 'A-Za-z0-9' 'N-ZA-Mn-za-m5-90-4'

用法:

echo test | tr 'A-Za-z0-9' 'N-ZA-Mn-za-m5-90-4'

~/.bashrc的别名定义,以便您更频繁地需要它:

alias rot="tr 'A-Za-z0-9' 'N-ZA-Mn-za-m5-90-4'"
© www.soinside.com 2019 - 2024. All rights reserved.