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

Bash SED:搜索并用反斜杠替换两个表达式,bash,sed,replace,latex,backslash,Bash,Sed,Replace,Latex,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},但没

我正在尝试使用
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的终端中运行此操作

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


我需要将单个反斜杠更改为双斜杠,并将变量名引号从
更改为
,以使其工作。

将反斜杠转义并将
替换为

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

您是否尝试过避开反斜杠,即'var2=“k{\\parallel}”?很好-“\\\”和
“-->”
的组合实现了这一点。为什么需要
?如果您使用
bash将删除一个反斜杠。如果您要使用
将反斜杠替换为三个反斜杠。