文本替换bash脚本

时间:2014-01-25 13:05:28

标签: bash shell replace substitution

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

我不知道怎么写'

4 个答案:

答案 0 :(得分:4)

是的存在语法问题,请尝试使用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"

问题是你使用的是嵌套的单引号(代码中引用)。

答案 1 :(得分:4)

退出单引号,然后输入一个转义引号,然后启动另一个单引号字符串:

sed  's/a'\''/\à/g' -i "$1"

答案 2 :(得分:0)

awk '{ gsub(/e'\''/,"è"); print}' "$1"

答案 3 :(得分:0)

bash中提供的另一种解决方案是$'...'引用,它允许转义单引号:

sed  $'s/a\'/\à/g' -i "$1";