我的任务是创建一个 sed 脚本文件,该文件可以从英语翻译成莫尔斯电码。但首先将莫尔斯电码文件放入 sed 脚本中并转换为可用于将英语 ito 莫尔斯电码翻译的文件。所以我尝试了这种方式。我在 sed 脚本中创建了文件,如下所示
s/[Aa]/\.-/g
s/[Bb]/-\.\.\./g
s/[Cc]/-\.-\./g
s/[Dd]/-\.\./g
s/[Ee]/\./g
s/[Ff]/\.\.-\./g
s/[Gg]/--\./g
s/[Hh]/\.\.\.\./g
s/[Ii]/\.\./g
s/[Jj]/\.---/g
s/[Kk]/-\.-/g
s/[Ll]/\.-\.\./g
s/[Mm]/--/g
s/[Nn]/-\./g
s/[Oo]/---/g
s/[Pp]/\.--\./g
s/[Qq]/--\.-/g
s/[Rr]/\.-\./g
s/[Ss]/\.\.\./g
s/[Tt]/-/g
s/[Uu]/\.\.-/g
s/[Vv]/\.\.\.-/g
s/[Ww]/\.--/g
s/[Xx]/-\.\.-/g
s/[Yy]/-\.--/g
s/[Zz]/--\.\./g
s/0/------/g
s/1/\.---/g
s/2/\.\.---/g
s/3/\.\.\.--/g
s/4/\.\.\.\.-/g
s/5/\.\.\.\.\./g
s/6/-\.\.\.\./g
s/7/--\.\.\./g
s/8/---\.\./g
s/9/----\./g
但最终我应该有一个脚本文件,可用于将英语翻译为莫尔斯电码。我被困在这里了
答案1
你完成了。
只需在文件上运行脚本:
sed -f script.sed inputfile
例子:
$ cat file
Kusalananda
$ sed -f script.sed file
-.-..-....-.-...--..--.-...-
脚本中唯一值得评论的是,当点出现在替换文本中时不需要转义,并且脚本不处理标点符号。您可能还希望以空格或其他字符结束每个代码,以便于解码(s/\(.\)/\1 /g
如果您将其作为第一条指令运行,则可以这样做)。
您还可以[Aa]
通过让第一个指令为
s/\([A-Z]\)/\L\1/g
虽然这需要 GNU sed
,但会将所有字母转换为小写。
在非 GNU 中sed
,以下命令会将所有字母小写:
y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/
如果您愿意,您可以添加
#!/usr/bin/sed -f
作为脚本的最上面一行并使其可执行。这将允许您运行脚本
./script.sed file
前提是在线路径sed
正确#!
。.sed
当然,您也可以去掉文件名的扩展名。它什么也不做。