如何创建获取字符串并将其转换为另一个托管字符串的脚本?



我的目的是捕获我键入的字符串的值,并将这些值转移到其他字母上。从本质上讲,它将是一个伪造的翻译程序或自定义密码生成脚本。函数示例:

我会输入这句话:

你是谁?

例如,输出将被 1 移动到下一个辅音或元音。脚本还需要知道如何根据需要跳过元音或辅音,并且为了论证,y 将始终被视为元音。所以输出将是:

Xju eso auy?

这是我想尝试的创意写作项目,作为制作另一种语言的一种手段。理想情况下,移位变量也可以是一个输入,以找到最佳结果。甚至可能同时对元音和辅音进行可变移位?

如果你真的是为了一个创意写作项目而这样做,那么我认为深入研究编程是没有必要的。您描述的任何输入转换都不需要程序做出决策。那是; 选择编码后,传入的字母将与传出字母牢固关联。这极大地扩展了您如何实现此目的的选项,并大大简化了任务的复杂性。

由于您标记了终端,因此您可以在以下操作中使用以下几个命令:

echo "Who are you?" | perl -pe 'tr/N-ZA-Mn-za-m/A-Za-z/'

输出:Jub ner lbh?
这是著名的 Rot13"编码"(它所做的只是替换字母表中后面的 13 字母)。它特别方便,因为 13 是字母表的 26 的一半,所以放入一些"编码"文本会让你返回原始文本:

echo "Jub ner lbh?" | perl -pe 'tr/N-ZA-Mn-za-m/A-Za-z/'

输出:Who are you?
echo只是将文本发送到屏幕或其他命令。在这里,我们将文本"How are you?"echo到管道|中,以将其传递给下一个命令perl,这是一个非常强大且灵活的文本操作和报告程序。该行的其余部分只是 perl 关于如何在字母表中稍后旋转 13 个字母的说明。

快速说明;通常按回车键在终端中运行命令。不过,您可以在一行末尾放置一个反斜杠并按回车键,然后它会让您继续在下一行键入,但将其全部视为一个命令。排队很方便。

echo "How are you?" | tr 
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' 
'DFVBTXEUWZOSHCJMAQYRINKLPGdfvbtxeuwzoshcjmaqyrinklpg'

输出:Ujk dqt pji?还有
另一个命令,tr.此示例演示了任意替换 — 在本例中为随机替换。它查看第一个长字母集,并交换位于匹配位置的第二个长集中的字母。由于此替换示例是随机的,因此您可以使用这种映射来创建"密码"拼图。

tr命令的伟大之处在于,您可以告诉它使用您想要的任何输入到输出"映射"。当然,这有点手动,但是嘿 - 无需编程!

以下是实现您请求的"辅音和元音"示例移位的映射:

echo "Who are you?" | tr 
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' 
'ECDFIGHJOKLMNPUQRSTVYWXZABecdfighjoklmnpuqrstvywxzab'

输出:Xju esi auy?不手工做有它的好处——你错过了一个元音。

因此,如果您需要快速尝试不同的映射,请考虑更多地了解perl(或更简单:sed.或更复杂的:awk。或者或或...相反,如果您不介意进行一些仔细的命令构造,只需将每个传入的字母与您想要的输出字母对齐,我认为tr会很好。

相关内容

最新更新