2014-01-28 142 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