如何解码一个文件,其中每个字母都被字母表中前面的 13 个字母替换?

Jen*_*ssa 5 command-line text-processing

有一个受 ROT13 影响的文本,称为rot.txt. ROT13(旋转 13 位)用字母表中的 13 个字母替换一个字母。如何编写命令来查看实际文本?

我试过:

cat rot.txt | tr 'A-Za-z' 'N-ZA-Mn-za-m'
Run Code Online (Sandbox Code Playgroud)

但没有成功

sma*_*c89 5

这是一种带有示例的方法

\n\n
echo "hello world" | tr "$(echo -n {A..Z} {a..z} | tr -d \' \')" "$(echo -n {N..Z} {A..M} {n..z} {a..m} | tr -d \' \')"\n
Run Code Online (Sandbox Code Playgroud)\n\n

输出:

\n\n
uryyb jbeyq\n
Run Code Online (Sandbox Code Playgroud)\n\n

使其成为一个函数:

\n\n
function rot13() {    \n    cat | tr "$(echo -n {A..Z} {a..z} | tr -d \' \')" "$(echo -n {N..Z} {A..M} {n..z} {a..m} | tr -d \' \')" \n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

用法:

\n\n
\xe2\x9e\x9c echo "hello world" | rot13 \nuryyb jbeyq\n
Run Code Online (Sandbox Code Playgroud)\n


小智 5

您还可以使用以下命令获得相同的输出:

tr '[a-z][A-Z]' '[n-za-m][N-ZA-M]'
Run Code Online (Sandbox Code Playgroud)

或者

tr '[a-zA-Z]' '[n-za-mN-ZA-M]'
Run Code Online (Sandbox Code Playgroud)

就我个人而言,我发现这种语法更容易。