我在互联网上阅读了很多关于'tr'命令用法的教程。但是,我无法理解如何使用shell脚本加密电子邮件地址使用rot13来移动字符。任何人都可以提供链接或示例吗?
不确定你想如何使用它,但这是一个让你入门的基本例子:
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
红宝石(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")'
确实是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"
。
同时做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'"