2013-05-21 50 views
1

我不能讓下面的bash sed命令來查找和替換,因爲它不匹配:的bash sed命令未能查找和替換

$ sed -i.bak 's,\"js/lj.main.min.js\?\d{14}\","js/lj.main.min.js?20130521080532",g' index.html 

$ sed -i.bak 's,\"js/lj\.main\.min\.js\?\d{14}\","js/lj.main.min.js?20130521080532",g' index.html 

上的文本文件,包括:

<script src="js/lj.main.min.js?20130520120515"></script> 

應更改爲:

<script src="js/lj.main.min.js?20130521080532"></script> 

正則表達式本身的工作,當我嘗試在http://fiddle.re/m7x56

所以怎麼了?

+0

,導致它與錯誤: 的sed:-e表達式#1,燒焦1:未知的命令: '「。 – johng

回答

2

這種表達對我的作品:

's,"js/lj\.main\.min.\js?[0-9]\{14\}","js/lj.main.min.js?20130521080532",g' 

注意,有正則表達式庫的多個版本。某些功能(\d)可能不支持的一些特殊字符backslashing可以是不同的({}?等)

+0

似乎關鍵是逃離滾動括號,謝謝! – johng