在写latex的时候,通常会有一个引用书目文件,有时会包含_
,&
,或者$
。例如,期刊名称“Nature Structural & Molecular Biology”,文章标题“Estimating The Cost Of New Drug Development: Is It Really $802 Million?”,卷号“suppl_2”。
所以我需要将这些符号分别转换成\_
、\&
、\$
,即在前面加一个反斜杠,以便 latex 编译器可以正确识别它们。我想使用 sed 进行转换。所以我尝试了
sed 's/_/\_/' <bib.txt >new.txt
但是生成的new.txt和bib.txt完全一样。我认为 _
和 \
需要转义,所以我尝试了
sed 's/\_/\\\_/' <bib.txt >new.txt
但也没有希望。有人可以帮忙吗?谢谢。
最佳答案
由于 shell 处理字符串的方式,您遇到了一些困难。反斜杠需要加倍:
sed 's/_/\\_/g'
请注意,我还添加了一个“g”来指示替换应全局应用于行,而不仅仅是第一个匹配项。
要处理所有三个符号,请使用字符类:
sed 's/[_&$]/\\&/g'
(替换文本中的 & 符号是指代匹配文本的特殊字符,而不是文字 & 符号字符。)
关于linux - sed 将 "_"、 "&"、 "$"分别替换为 "\_"、 "\&"、 "\$",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8080677/