【发布时间】:2020-10-08 20:35:24
【问题描述】:
我想替换一条线,它代表数学方程的一部分:
f(x,z,time,temp)=-(2.0)/(exp(128*((x-2.5*time)*(x-2.5*time)+(z-0.2)*(z-0.2))))+(
与上面类似的一个新的。新旧行都保存在 bash 变量中。
主要问题是数学方程式中充满了特殊字符,即使我用作方程式中未使用的分隔符特殊字符,也不允许在 bash 模式下进行正确搜索和替换。
我用过
sed -n "s|$OLD|$NEW|g" restart.k
和
sed -i "s|$OLD|$NEW|g" restart.k
但我总是得到错误的结果。 有什么办法解决这个问题吗?
【问题讨论】:
-
I get wrong results你得到什么结果?他们怎么错了?为什么使用-n开关?它们如何保存在 bash 变量中?这些变量的内容是什么?他们的价值观是什么?它们是如何初始化的?您确实了解sed解析正则表达式并且正则表达式具有特殊规则,它如何解释某些字符的含义?你知道这些规则吗?请创建一个minimal reproducible example -
需要转义特殊的
sed字符,如&、`\`等 -
这就是目标,这就是为什么我使用不同的分隔符,这不在数学方程式中。最后的结果是一样的:我无法搜索和替换方程。
-
在
[...]列表中转义或包含特殊字符,这样它们就失去了特殊含义。