我正在尝试在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'`
我也尝试了注释行,但它也不起作用。
它在命令行上运行正常。我不知道脚本中的问题是什么。
有什么建议吗?感谢。
答案 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
命令的分隔符。