2014-01-28 193 views
1

我很難用sed替換包含特殊字符的字符串。我的新老字符串顯示如下Sed替換字符串中的特殊字符

oldStr = "# td=(nstates=20) cam-b3lyp/6-31g geom=connectivity" 
newStr = "# opt b3lyp/6-31g geom=connectivity" 

我的sed命令如下

sed -i 's/\# td\=\(nstates\=20\) cam\-b3lyp\/6\-31g geom\=connectivity/\# opt b3lyp\/6\-31g geom\=connectivity/g' myfile.txt 

我沒有得到任何錯誤,但沒有匹配。任何想法如何解決我的模式。

感謝

回答

2

嘗試s|# td=(nstates=20) cam-b3lyp/6-31g geom=connectivity|# opt b3lyp/6-31g geom=connectivity|g'

可以s代替/後年使用任何東西,因爲你的表達式包含我用|代替斜槓。 -,=#不必轉義(只減去字符集[ ... ]),逃逸的parens表示一組,未轉義的parens是文字。

+0

非常感謝您的回覆。顯然我仍然在學習sed:咧嘴笑: – Jeanno