【问题标题】:Sed replacing Special Characters in a stringSed 替换字符串中的特殊字符
【发布时间】:2014-01-28 08:14:27
【问题描述】:

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

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

谢谢

【问题讨论】:

    标签: sed special-characters


    【解决方案1】:

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

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

    【讨论】:

    • 非常感谢您的回复。显然我还在学习 sed :grin:
    猜你喜欢
    • 2021-11-17
    • 1970-01-01
    • 2014-03-30
    • 2019-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多