Bash脚本sed

时间:2016-10-25 02:58:22

标签: bash shell sed

我正在尝试在bash脚本中使用sed,如下所示:

#!/bin/bash
for i in `seq 1 10`;
do
    j=$(($i-1))
    OLD="-option_something something/string1_${j}.txt"
    NEW="-option_somehting something/string1_${i}.txt"
    sed -e "s/$OLD/$NEW/g" file_to_edit.txt
    # sed -e "s/$OLD/$NEW/g" file_to_edit.txt > file_to_edit.txt.tmp && mv file_to_edit.txt.tmp file_to_edit.txt 
done

但我一直收到以下错误:

sed: -e expression #1, char 71: unknown option to S'`

我也尝试了注释行,但它也不起作用。

它在命令行上运行正常。我不知道脚本中的问题是什么。

有什么建议吗?感谢。

1 个答案:

答案 0 :(得分:2)

/OLD的值为NEW,这与您sed表达式中的分隔符使用的字符相同。所以最后的表达最终看起来像:

sed -e "s/-option_something something/string1_${j}.txt/-option_somehting something/string1_${i}.txt/g"

你看到那里的所有/了吗?请考虑一下:

sed -e "s|$OLD|$NEW|g" file_to_edit.txt

您可以使用任何字符作为sed的s命令的分隔符。