我正在尝试将一系列命令存储在一个文件中,这些命令在执行时将英语文本或文件转换为 Pig Latin,我知道 awk 有 if 语句来处理 '-yay' 的使用,并且何时简单地将第一个字母附加到“ay”,但我不确定如何使用它们。
答案1
作为基于字符的翻译,它可能sed
比awk
.例如,以下脚本将对非连字符的英语单词执行猪拉丁语翻译:
#!/bin/bash
C=bcdfghjklmnpqrstvwxyBCDFGHJKLMNPQRSTVWXY
V=aoueiAOUEI
while read -r line ; do
echo $(echo "$line" | sed 's/\s\+/\n/g' |
sed "s/\b\([$V]\)\(\w*\)/\1\2-yay/;tx
s/\b\([$C]\)\(\w\+\)/\2-\1ay/;:x" )
done
它涉及 a) 逐行处理输入,b) 将每行暂时分成空格上的多行,以及 c) 将每个单词翻译为两种模式之一:元音后跟零个或多个字母,翻译为以“-yay”结尾,或辅音后跟一个或多个字母,可翻译为这些字母后跟破折号、辅音和“ay”。然后,带有标点符号的翻译后的单词通过嵌套命令连接成一行$(...)
,并进行回显。