2013-02-20 220 views
3

我可以替換字符串中的文本,但只要我嘗試放入數字就無法匹配。sed替換字符串中的數字

注意表明這個[0-9]\+\是造成這個問題。

這工作:

sed -i "" -e "s/mySite-.js/mySite$current_timestamp.js/" template.php 

這不:

sed -i "" -e "s/mySite-[0-9]\+\.js/mySite$current_timestamp.js/" template.php 

我詢問this question earlier道歉,但我已經花了差不多一整天的這個愚蠢的事情,我要瘋了。

回答

4

請考慮包括樣本數據和預期輸出。

如果您要刪除[0-9]\+的重複號碼,請嘗試刪除\,然後使用[0-9]+

如果不工作,那麼你的sed不支持+,所以使用

sed -i "" -e "s/mySite-[0-9][0-9]*\.js/mySite$current_timestamp.js/" template.php 

IHTH

+0

@shelter,就是它!它看起來像我的版本的sed不支持'+',謝謝!生活可以繼續! – 2013-02-20 21:39:08

+1

@timpeterson你也可以使用啓用擴展正則表達式的選項'-r'(至少在某些版本的sed中,例如GNU sed 4.2.1),用'[0-9] +'與sed匹配。 – speakr 2013-02-20 21:40:39

+0

我之前嘗試過'-r',但是沒有工作,我只是使用了MacOSX 10.7.6,所以不知道這是否是一個邊緣情況。 – 2013-02-20 21:45:31