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

Sed替换字符串中的特殊字符,sed,special-characters,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\-31

使用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
我没有任何错误,但是没有对手。关于如何修复我的模式的任何想法

谢谢

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


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

非常感谢您的回复。显然,我还在学习sed:grin: