2012-09-04 146 views
1

我有文件sedFile.txt其在格式字符串CONNECTION='mysql://user:[email protected]:3308/SSMS/SUBSCRIBE';Linux的shell sed命令

我创建了具有以下行一个脚本:

fin=CONNECTION='mysql://user:[email protected]:3308/SSMS/SUBSCRIBE'; 
repla=connection 
sed -i "s/\$fin/$repla/g" /home/sedFile.txt 

即使脚本运行,这不是在做改变我文件。

我尝试以下操作:

sed -i 's/${fin}/${repla}/g' /home/sedFile.txt 
sed -i 's/^$fin/$repla/g' /home/sedFile.txt 
sed -i "s/$fin/$repla/g" /home/sedFile.txt 
sed -i "s/${fin}/${repla}/g" /home/sedFile.txt 

回答

1

如果你想被列入你必须引用或转义模式单引号:

fin="CONNECTION='mysql://user:[email protected]:3308/SSMS/SUBSCRIBE'" 

然后,使用任何四大行你尝试过(即不是与\$fin)。

更新:为了使sed工作,你不能使用/分离模式和替代,因为这个字符字符串中存在了。使用不同的分隔符:

sed -i "s,$fin,$repla,g" /home/sedFile.txt 
+0

我试图像你说..The脚本工作压力太大...但它不是取代字符串... :( – jithkaran

+0

ouch。看到更新。 – choroba

+0

ohh !!!非常感谢你......现在工作...... :) – jithkaran

0
fin="CONNECTION='mysql://user:[email protected]:3308/SSMS/SUBSCRIBE'" 
repla=connection 
    in=$fin out=$repla perl -pi.nk -e 's/\Q$ENV{"in"}/$ENV{"out"}/g' /home/sedFile.txt 
1

可能是同其他的答案,但我不会伤害尝试

fin="CONNECTION='mysql://user:[email protected]:3308/SSMS/SUBSCRIBE';" 
repla="connection" 
sed -i "s|${fin}|${repla}|g" /home/sedFile.txt 
+0

这也工作...: ) – jithkaran