2011-09-27 160 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"

应该工作