12

多くのパーセント記号、プラス記号、およびパイプ記号を含むドキュメントがあります。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

これらのシンボルをこのコードに置き換えるにはどうすればよいですか?

4

3 に答える 3

16

テスト スクリプト:

#!/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 のバージョンとの唯一の違いは、拡張正規表現モードを使用しているため、パイプとプラスをエスケープするか、[].

于 2012-09-02T08:46:16.593 に答える
3
nawk '{sub(/%/,"\\textpercent");sub(/\+/,"\\textplus");sub(/\|/,"\\textpipe"); print}' file

以下でテスト:

> echo "% + |" | nawk '{sub(/%/,"\\textpercent");sub(/\+/,"\\textplus");sub(/\|/,"\\textpipe"); print}'
\textpercent \textplus \textpipe
于 2012-08-16T12:43:03.450 に答える
2

Use single quotes:

$ 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
于 2012-08-16T12:38:16.570 に答える