我在网上看过很多关于“tr”命令用法的教程。但是,我不明白如何用shell脚本使用rot13转换字符来加密电子邮件地址。有人能给予链接或示例吗?
nkkqxpd91#
不确定如何使用它,但下面是一个基本示例:
echo 'fooman@example.com' | tr 'A-Za-z' 'N-ZA-Mn-za-m'
为了使它更简单,你可以在你的.bashrc文件中为tr命令取别名:
.bashrc
tr
alias rot13="tr 'A-Za-z' 'N-ZA-Mn-za-m'"
现在您只需调用:
echo 'fooman@example.com' | rot13
lx0bsm1f2#
对于tr来说,这确实是一个完美的任务。它应该可以完成您想要的任务:
tr 'A-Za-z' 'N-ZA-Mn-za-m'
第一组中的每个字符将替换为第二组中的相应字符。例如,A替换为N,B替换为O,等等。小写字母也是如此。所有其他字符将不加更改地通过。
**请注意,[和]在您通常需要的地方没有出现。**这是因为tr将方括号按字面意义处理,而不是作为范围表达式处理。因此,例如,tr -d '[A-Z]'将删除大写字母 * 和 * 方括号。如果要保留方括号,请使用tr -d 'A-Z':
[
]
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"。
tr -d '[[:lower:]]'
tr -d '[:lower:]'
tr "[a-z]" "[A-Z]"
tr "a-z" "A-Z"
lf5gs5x23#
Ruby(1.9+)
$ ruby -ne 'print $_.tr( "A-Za-z", "N-ZA-Mn-za-m") ' file
Python皮
$ echo "test" | python -c 'import sys; print sys.stdin.read().encode("rot13")'
pepwfjgg4#
同时执行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的别名定义(如果您经常需要它):
~/.bashrc
alias rot="tr 'A-Za-z0-9' 'N-ZA-Mn-za-m5-90-4'"
(精确为rot135或rot18)
0h4hbjxa5#
#相互转换
# 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/
Shell脚本
#!/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 $?
kgsdhlau6#
#!/bin/bash echo 'rot13@rot.com' | tr 'A-Za-z' 'N-ZA-Mn-za-m' echo 'rot13@rot.com' | rot13
sudo chmod +x file_name
./file_name example: ./try.sh
6条答案
按热度按时间nkkqxpd91#
不确定如何使用它,但下面是一个基本示例:
为了使它更简单,你可以在你的
.bashrc
文件中为tr
命令取别名:现在您只需调用:
lx0bsm1f2#
对于
tr
来说,这确实是一个完美的任务。它应该可以完成您想要的任务:第一组中的每个字符将替换为第二组中的相应字符。例如,A替换为N,B替换为O,等等。小写字母也是如此。所有其他字符将不加更改地通过。
**请注意,
[
和]
在您通常需要的地方没有出现。**这是因为tr
将方括号按字面意义处理,而不是作为范围表达式处理。因此,例如,tr -d '[A-Z]'
将删除大写字母 * 和 * 方括号。如果要保留方括号,请使用tr -d 'A-Z'
:字符类也一样。例如
tr -d '[[:lower:]]'
可能是错误的,应该是tr -d '[:lower:]'
。然而,在这种幸运的情况下,您可以不使用括号!例如,
tr "[a-z]" "[A-Z]"
意外地工作,因为第一组中的方括号被第二组中相同的方括号所替换,但实际上这是一个不好的习惯。请改用tr "a-z" "A-Z"
。lf5gs5x23#
Ruby(1.9+)
Python皮
pepwfjgg4#
同时执行ROT13(字母)和ROT5(数字):
使用方法:
~/.bashrc
的别名定义(如果您经常需要它):(精确为rot135或rot18)
0h4hbjxa5#
#相互转换
Shell脚本
kgsdhlau6#
您可以在shell脚本中执行它
通过运行以下命令使文件成为可执行文件:
要输出答案,请运行: