我有一个包含许多百分比,加号和管道标志的文档。我想用代码替换它们,以便在TeX中使用。
%
变为\textpercent
。+
变为\textplus
。|
变为\textbar
。这是我正在使用的代码,但它不起作用:
sed -i "s/\%/\\\textpercent /g" ./file.txt
sed -i "s/|/\\\textbar /g" ./file.txt
sed -i "s/\+/\\\textplus /g" ./file.txt
如何使用此代码替换这些符号?
答案 0 :(得分:13)
测试脚本:
#!/bin/bash
cat << 'EOF' > testfile.txt
1+2+3=6
12 is 50% of 24
The pipe character '|' looks like a vertical line.
EOF
sed -i -r 's/%/\\textpercent /g;s/[+]/\\textplus /g;s/[|]/\\textbar /g' testfile.txt
cat testfile.txt
<强>输出:强>
1\textplus 2\textplus 3=6
12 is 50\textpercent of 24
The pipe character '\textbar ' looks like a vertical line.
@tripleee已经以类似的方式提出了这一点,我认为没有理由不这样做。如您所见,我的平台使用与您相同版本的GNU sed。 @ tripleee版本的唯一区别是我使用扩展的正则表达式模式,所以我必须要转义管道和加号,或者将它放入带有[]
的字符类中。
答案 1 :(得分:3)
nawk '{sub(/%/,"\\textpercent");sub(/\+/,"\\textplus");sub(/\|/,"\\textpipe"); print}' file
测试如下:
> echo "% + |" | nawk '{sub(/%/,"\\textpercent");sub(/\+/,"\\textplus");sub(/\|/,"\\textpipe"); print}'
\textpercent \textplus \textpipe
答案 2 :(得分:2)
使用单引号:
$ cat in.txt
foo % bar
foo + bar
foo | bar
$ sed -e 's/%/\\textpercent /g' -e 's/\+/\\textplus /g' -e 's/|/\\textbar /g' < in.txt
foo \textpercent bar
foo \textplus bar
foo \textbar bar