在写胶乳,通常有一个书目文件,它有时含有_,&或$.例如,期刊名称"自然结构与分子生物学",文章标题"估计新药开发的成本:它真的是1.80亿美元?",卷号"suppl_2".
所以我需要将这些符号转换为\_,\&和\$分别在前面添加反斜杠,以便乳胶编译器可以正确识别它们.我想用sed进行转换.所以我试过了
sed 's/_/\_/' <bib.txt >new.txt
Run Code Online (Sandbox Code Playgroud)
但生成的new.txt与bib.txt完全相同.我想_并且\需要逃脱,所以我试过了
sed 's/\_/\\\_/' <bib.txt >new.txt
Run Code Online (Sandbox Code Playgroud)
但也没有希望.有人可以帮忙吗?谢谢.
Mic*_*ber 12
由于shell处理字符串的方式,你遇到了一些困难.反斜杠需要加倍:
sed 's/_/\\_/g'
Run Code Online (Sandbox Code Playgroud)
请注意,我还添加了一个'g'来表示替换应该全局应用于行,而不仅仅是第一个匹配.
要处理所有三个符号,请使用字符类:
sed 's/[_&$]/\\&/g'
Run Code Online (Sandbox Code Playgroud)
(替换文本中的&符是一个特殊字符,指的是匹配的文本,而不是文字的&符号.)