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

Bash 将字符串与空格匹配,并用另一个类似的字符串替换为空格,bash,sed,Bash,Sed,我有一个名为Try1.txt的文件,其中包含字符串 “结束日期:” 我有一个名为Try1.sh的脚本,它将字符串分配给变量 STR1=“结束日期:” 我还为以下变量分配了一个替换字符串 STR2=“结束日期:2014年6月5日星期二” 我想就地编辑文件并用STR2替换STR1。 我尝试了几种不同的sed命令,但都没有找到答案。 我尝试了sed-I-e“s/$STR1/$STR2/g”Try1.out.txt 但它给了我以下错误: sed.exe:-e expression#1,char 49:s

我有一个名为Try1.txt的文件,其中包含字符串
“结束日期:”
我有一个名为Try1.sh的脚本,它将字符串分配给变量
STR1=“结束日期:”
我还为以下变量分配了一个替换字符串
STR2=“结束日期:2014年6月5日星期二”
我想就地编辑文件并用STR2替换STR1。
我尝试了几种不同的sed命令,但都没有找到答案。
我尝试了
sed-I-e“s/$STR1/$STR2/g”Try1.out.txt

但它给了我以下错误:

sed.exe:-e expression#1,char 49:s的未知选项

您的问题是
$STR2
包含斜杠
/

假设
$STR1
$STR2
都不包含下划线,
\uuu
,以下操作将起作用:

$ sed "s_${STR1}_${STR2}_g" <Try1.txt >Try1.out.txt
$sed“s_${STR1}{STR2}\u g”Try1.out.txt
测试:

$STR1=“结束日期:”
$STR2=“结束日期:2014年6月5日星期二”
$echo“$STR1”>Try1.txt

$sed“s_${STR1}{STR2}}g”我尝试了这两个选项,但出现了以下错误。选项在此NT BASH上不可用release@user3145909:我不熟悉NT bash(似乎基于bash 1.14.2)。但是我认为
sed“s{STR1}{STR2}g”
$ 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