我有一个名为Try1.txt的文件,其中包含字符串
“结束日期:”
我有一个名为Try1.sh的脚本,它的字符串分配给变量
STR1 =“结束日期:”
我有一个替换字符串也分配给以下变量
STR2 =“结束日期:星期二05/06/2014”
我想编辑文件并用STR2替换STR1
我尝试了几种不同的sed命令,但无法弄明白
我试过了sed -i -e "s/$STR1/$STR2/g" <Try1.txt >Try1.out.txt
但它给了我以下错误:
sed.exe:-e expression#1,char 49:`s'
答案 0 :(得分:2)
您的问题是$STR2
包含斜杠/
。
假设$STR1
和$STR2
都不包含下划线_
,则以下内容将起作用:
$ sed "s_${STR1}_${STR2}_g" <Try1.txt >Try1.out.txt
测试:
$ STR1="End Date : "
$ STR2="End Date : Tuesday 05/06/2014"
$ echo "$STR1" > Try1.txt
$ sed "s_${STR1}_${STR2}_g" <Try1.txt
End Date : Tuesday 05/06/2014
如果您不能保证字符串中没有下划线,则以下似乎也有效:
sed "s^A$STR1^A$STR2^Ag" <Try1.txt
其中三个^A
输入为Cntrl-V Cntrl-A
。 (使用\x01
对我不起作用。)
另请参阅,例如sed search and replace strings containing /和Sed replacement not working when using variables。