我在使用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
我没有得到任何错误,但是没有匹配。关于如何修复模式的任何想法。
由于
答案 0 :(得分:2)
尝试s|# td=(nstates=20) cam-b3lyp/6-31g geom=connectivity|# opt b3lyp/6-31g geom=connectivity|g'
您可以在s
而不是/
之后使用旁边的任何内容,因为您的表达式包含我使用|
的斜杠。 -
,=
和#
不必转义(仅在字符集[
中删除... ]
),转义的parens表示一组,非扩展的parens是文字。