如何用sed替换{&"x27;{\i}为{&"x27;i}

如何用sed替换{&"x27;{\i}为{&"x27;i},sed,special-characters,bibtex,Sed,Special Characters,Bibtex,我正在使用Papers3导出Bibtex库,但某些重音符号存在错误。许多错误都缺少大括号,因此在我运行Bibtex时出现编译错误。以下是bib文件中的错误示例: author = {Combi, J A and Rib{\'o}, M and Mart{\'{\i}, J and Chaty, S.}, 我想替换我的文件(agn.bib)中的所有实例,方法如下: sed "s/{\'{\i}/{\'i}/g" agn.bib 但是这没有任何作用,我在堆栈溢出上找不到解决方法。您必须两次跳过反

我正在使用Papers3导出Bibtex库,但某些重音符号存在错误。许多错误都缺少大括号,因此在我运行Bibtex时出现编译错误。以下是bib文件中的错误示例:

author = {Combi, J A and Rib{\'o}, M and Mart{\'{\i}, J and Chaty, S.},
我想替换我的文件(agn.bib)中的所有实例,方法如下:

sed "s/{\'{\i}/{\'i}/g" agn.bib
但是这没有任何作用,我在堆栈溢出上找不到解决方法。

您必须两次跳过反斜杠;一次用于shell,一次用于
sed

sed -i "s/{\\\\'{\\\\i}/{\\\\'i}/g" file
因为反斜杠是两者的元字符

当您说
sed“\\\\”
时,由于双引号,
sed
实际上接收
\\\
,并且根据基本正则表达式的规则,将反斜杠视为文字字符。

这可能适用于您(GNU-sed):


通过引用替换一个
\
,即
\
,并通过将其传递到外壳来匹配一个
'
,即
\'

谢谢。这很有效,似乎是最干净的解决方案。完成。再次感谢。
sed -i 's/{\\'\''{\\i}/{\\'\''i}/g' file