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将删除一个反斜杠。如果您要使用”
将反斜杠替换为三个反斜杠。