SED:搜索并用反斜杠替换两个表达式

SED: Search and replace two expressions with backslash

我正在尝试使用 sed 搜索和替换字符串。搜索和替换字符串中都有反斜杠。例如

var="\text{kpll}"
var2="k_{\parallel}"

sed -i.bak "s|$var|$var2|g" MathematicaToLaTex.tex

这没有按预期工作。我期待

\text{kpll} ---> k_{\parallel}

相反,我得到

\text{kpll} ---> \k_{parallel}

似乎 sed 正确地找到了字符串 \text{kpll} 就好了,但它并没有准确地替换它。浏览了论坛但找不到解决方案。已尝试使用 ' 而不是 " 更改分隔符,但无济于事。还尝试将文件类型从 .tex 更改为 .txt,但没有任何区别。 运行 这在 MacOS 的终端中。

--------编辑--------

我需要 both 将单反斜杠更改为双反斜杠,并将变量名引号从 " 更改为 ' 才能正常工作。

转义反斜杠并将 " 替换为 ':

var='\text{kpll}'
var2='k_{\parallel}'
sed -i.bak "s|$var|$var2|g" MathematicaToLaTex.tex