匹配字符串与空格,并替换为另一个类似的字符串与空格

时间:2013-12-31 01:11:53

标签: bash sed

我有一个名为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'

的未知选项

1 个答案:

答案 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

相关问题