我的目的是捕获我键入的字符串的值,并将这些值转换为其他字母。本质上,这将是伪造的翻译程序或自定义密码生成脚本。函数示例:
我要输入句子:
你是谁?
,例如,将输出说1移到下一个辅音或元音。该脚本还需要知道如何根据需要跳过元音或辅音,并且出于争论的目的,y始终被视为元音。因此输出为:
Xju eso auy?
这是我想尝试进行创造性写作项目的一种手段,可以用来制作另一种语言。理想情况下,移位变量也可以作为输入,以找到最佳结果。元音和辅音是否可能同时变化?
答案 0 :(得分:1)
如果您确实是为一个创造性的写作项目这样做,那么我认为不建议深入编程。您描述的所有输入转换都不需要程序做出决定。那是;一旦选择了编码,输入的字母将分别与输出的字母牢固关联。这极大地扩展了您实现此目标的选项,并大大简化了任务的复杂性。
自从标记了 Terminal 后,您可以在操作中使用以下几个命令:
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
只是将文本发送到屏幕或其他命令。在这里,我们将文本echo
"How are you?"
放入管道|
中,以将其传递给下一个命令perl
,这是一个功能强大且灵活的文本处理和报告程序。该行的其余部分只是有关如何在字母表中后面旋转13个字母的perl指令。
快速笔记;通常按回车键在终端中运行命令。您可以在行的末尾加上反斜杠\
,然后按回车键,这样您就可以继续在下一行输入内容,但是将其全部视为一个命令。方便整理内容。
echo "How are you?" | tr \
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' \
'DFVBTXEUWZOSHCJMAQYRINKLPGdfvbtxeuwzoshcjmaqyrinklpg'
输出:Ujk dqt pji?
还有另一个命令tr
。此示例演示了任意替换-在这种情况下为随机替换。它会浏览第一个长字母组,然后交换匹配的 position 中第二个长字母组中的字母。由于此替换示例是随机的,因此可以使用这种映射来创建“密码”难题。
关于tr
命令的妙处在于,您可以告诉它使用您想要的任何输入到输出“映射”。当然,这有点手工,但是,嘿,不需要编程!
以下是实现您要求的“辅音和元音”示例移位的映射:
echo "Who are you?" | tr \
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' \
'ECDFIGHJOKLMNPUQRSTVYWXZABecdfighjoklmnpuqrstvywxzab'
输出:Xju esi auy?
不手工做有其优点-您错过了其中的元音。
因此,如果您需要快速尝试其他映射,请考虑学习更多有关perl
(或更简单的内容:sed
。或更复杂的内容:awk
。Or or or…)。相反,如果您不介意一些仔细的命令构造,只是将每个传入的字母与所需的输出字母对齐,那么我认为tr
会很好用。