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

时间:2018-01-21 16:40:41

标签: 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},但它并没有准确地替换它。浏览过论坛但找不到解决方案。尝试使用'代替"来更改分隔符,但无济于事。还尝试将文件类型从.tex更改为.txt,但没有任何区别。在MacOS的终端中运行。

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

我需要 将单个反斜杠更改为double,并将变量名称引号从"更改为'才能生效。

1 个答案:

答案 0 :(得分:3)

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

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