我想将 a'
替换为 à
, e'
中的 è
等。
#!/bin/sh
if [ -e "$1" ]
then
sed 's/a'/à/g' -i "$1";
sed 's/e'/è/g' -i "$1";
sed 's/i'/ì/g' -i "$1";
sed 's/o'/ò/g' -i "$1";
sed 's/u'/ù/g' -i "$1";
else
echo "File not found!"
fi
但是我得到了这个错误:
Syntax error: Unterminated quoted string
我不知道如何写'
是的,有语法问题,请尝试您的sed命令:
sed -i "s/a'/à/g" "$1"
sed -i "s/e'/è/g" "$1"
sed -i "s/i'/ì/g" "$1"
sed -i "s/o'/ò/g" "$1"
sed -i "s/u'/ù/g" "$1"
问题是您使用的是嵌套的单报价(在代码内部的报价)。
退出单个引号,然后放置一个逃脱的报价,然后启动另一个单个引号字符串:
sed 's/a'''/à/g' -i "$1"
awk '{ gsub(/e'''/,"è"); print}' "$1"
bash
中的另一个解决方案是$'...'
引用,它确实允许逃脱的单引号:
sed $'s/a'/à/g' -i "$1";