在写乳胶时,通常会有一个参考书目文件,有时包含_
,&
或$
。例如,期刊名称“自然结构与分子生物学”,文章标题“估计新药开发的成本:它真的是1.80亿美元?”,卷号“suppl_2”。
所以我需要将这些符号分别转换为\_
,\&
和\$
,即在前面添加反斜杠,以便latex编译器可以正确识别它们。我想用sed进行转换。所以我试过
sed 's/_/\_/' <bib.txt >new.txt
但生成的new.txt与bib.txt完全相同。我认为_
和\
需要转义,所以我尝试了
sed 's/\_/\\\_/' <bib.txt >new.txt
但也没有希望。有人可以帮忙吗?感谢。
答案 0 :(得分:12)
由于shell处理字符串的方式,你遇到了一些困难。反斜杠需要加倍:
sed 's/_/\\_/g'
请注意,我还添加了一个'g'来表示替换应该全局应用于线路,而不仅仅是第一场比赛。
要处理所有三个符号,请使用字符类:
sed 's/[_&$]/\\&/g'
(替换文字中的&符号是指代匹配文本的特殊字符,而不是字面符号字符。)
答案 1 :(得分:3)
sed 's/\([_&$]\)/\\\1/g'
e.g。
eu-we1:~/tmp# cat zzz
bla__h&thisis¬ the $$end
eu-we1:~/tmp# sed 's/\([_&$]\)/\\\1/g' < zzz
bla\_\_h\&thisis\¬ the \$\$end
eu-we1:~/tmp#
答案 2 :(得分:1)
您需要逃离\
。像这样:sed 's/_/\\_/' new.txt
。
编辑:另外,要修改new.txt,你需要传递sed -i
标志:
sed -iBAK 's/_/\\_/' new.txt
答案 3 :(得分:1)
你需要逃避它两次。
➜ 8080667 sed 's/_/\\_/' new.txt
In writing latex, usually there is a bibliography file, which sometimes contains \_, &, or $. For example, the journal name "Nature Structural & Molecular Biology", the article title "Estimating The Cost Of New Drug Development: Is It Really $802 Million?", and the volume number "suppl_2".
➜ 8080667