我在互联网上阅读了很多关于'tr'命令用法的教程.但是,我无法理解如何使用shell脚本加密电子邮件地址使用rot13来移动字符.任何人都可以提供链接或示例吗?
sam*_*len 70
不确定你想如何使用它,但这是一个让你入门的基本例子:
echo 'fooman@example.com' | tr 'A-Za-z' 'N-ZA-Mn-za-m'
Run Code Online (Sandbox Code Playgroud)
为了简化操作,您可以tr
在.bashrc
文件中为命令添加别名:
alias rot13="tr 'A-Za-z' 'N-ZA-Mn-za-m'"
Run Code Online (Sandbox Code Playgroud)
现在你可以打电话:
echo 'fooman@example.com' | rot13
Run Code Online (Sandbox Code Playgroud)
tr
的确是一项完美的任务。这应该做您想要的:
tr 'A-Za-z' 'N-ZA-Mn-za-m'
Run Code Online (Sandbox Code Playgroud)
第一组中的每个字符都将替换为第二组中的相应字符。例如,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]
Run Code Online (Sandbox Code Playgroud)
字符类相同。例如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'
Run Code Online (Sandbox Code Playgroud)
用法:
echo test | tr 'A-Za-z0-9' 'N-ZA-Mn-za-m5-90-4'
Run Code Online (Sandbox Code Playgroud)
您的别名定义~/.bashrc
,以防您更频繁地需要它:
alias rot="tr 'A-Za-z0-9' 'N-ZA-Mn-za-m5-90-4'"
Run Code Online (Sandbox Code Playgroud)
(准确地说是 rot135 或 rot18)
红宝石(1.9+)
$ ruby -ne 'print $_.tr( "A-Za-z", "N-ZA-Mn-za-m") ' file
Run Code Online (Sandbox Code Playgroud)
蟒蛇
$ echo "test" | python -c 'import sys; print sys.stdin.read().encode("rot13")'
Run Code Online (Sandbox Code Playgroud)
# 相互变换
# rot13
tr 'A-Za-z' 'N-ZA-Mn-za-m' <<< 'user@domain.com'
# rot13.5 (rot18)
tr 'A-Za-z0-9' 'N-ZA-Mn-za-m5-90-4' <<< 'user123@domain.com'
# rot47
tr '\!-~' 'P-~\!-O' <<< 'user123@domain.com'
# rot13 -- SED anyone
echo 'user@domain.com' | sed y/NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/
Run Code Online (Sandbox Code Playgroud)
外壳脚本
#!/bin/bash
# Purpose: Rotate 13 characters (a reciprocal transformation)
# ./rot13.sh 'A String to look Ciphered'
tr 'A-Za-z' 'N-ZA-Mn-za-m' <<< "$1"
exit $?
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
54873 次 |
最近记录: |