2011-09-27 187 views
1

我無法通過sed替換腳本中的修改日期。使用sed替換文本

我得到的最後修改日期是這樣的:

olddate=`grep -m1 "Built " script.sh | cut -c 22-29` 

我得到的當前日期:

newdate=`date +%d/%m/%y` 

基本上我想有新的日期,以取代舊日期

sed -i "" "s/$olddate/$newdate/g" script.sh 

但是這不起作用,因爲日期包含斜槓。我環顧四周,找不到正確逃避它們的方法。任何幫助,將不勝感激。

+0

'grep的[...] | cut [']'通常用'awk'表示更好(並且可以節省管道) – Johnsyweb

+0

我該怎麼做? –

+0

在* this *的情況下,'awk'/ Built/{print substr($ 0,22,8);退出}'script.sh' – Johnsyweb

回答

6

可以使用比其他斜槓分隔,例如 「;

sed -i "" "s;$olddate;$newdate;g" script.sh 
+0

完美。感謝您的快速響應! –

3

使用,而不是/!

sed -i "" "s,$olddate,$newdate,g" script.sh 

事實上,你幾乎可以使用任何字符作爲分隔符。

2

使用sed "s#$olddate#$newdate#g"

應該工作