文本替换bash脚本



我想将 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";

相关内容

  • 没有找到相关文章

最新更新