2012-09-04 282 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