Sed替换字符串中的特殊字符

时间:2014-01-28 08:14:27

标签: sed special-characters

我在使用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

我没有得到任何错误,但是没有匹配。关于如何修复模式的任何想法。

由于

1 个答案:

答案 0 :(得分:2)

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

您可以在s而不是/之后使用旁边的任何内容,因为您的表达式包含我使用|的斜杠。 -=#不必转义(仅在字符集[中删除... ]),转义的parens表示一组,非扩展的parens是文字。