如何用 sed 将 {\'{\i} 替换为 {\'i}
How to replace {\'{\i} by {\'i} with sed
我正在使用 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
但这没有任何作用,我在 Stack Overflow 上找不到如何做的答案。
您必须转义反斜杠两次;一次用于 shell,一次用于 sed
:
sed -i "s/{\\'{\\i}/{\\'i}/g" file
因为反斜杠是两者的元字符。
当你说sed "\\"
时,由于双引号,sed
实际上收到\
,根据基本正则表达式的规则,将反斜杠视为文字字符。
这可能适合您 (GNU sed):
sed -i 's/{\'\''{\i}/{\'\''i}/g' file
通过引用替换 \
即 \
并通过将其传递给 shell 匹配 a'
即 '\''
.
我正在使用 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
但这没有任何作用,我在 Stack Overflow 上找不到如何做的答案。
您必须转义反斜杠两次;一次用于 shell,一次用于 sed
:
sed -i "s/{\\'{\\i}/{\\'i}/g" file
因为反斜杠是两者的元字符。
当你说sed "\\"
时,由于双引号,sed
实际上收到\
,根据基本正则表达式的规则,将反斜杠视为文字字符。
这可能适合您 (GNU sed):
sed -i 's/{\'\''{\i}/{\'\''i}/g' file
通过引用替换 \
即 \
并通过将其传递给 shell 匹配 a'
即 '\''
.