これを行う方法があることを知っていますが、sed
正しく機能させることはできません。を使用するコードを含むLatexファイルがあります$
。これをMathJaxに変換したいと思います。これを行うには、aの奇数インスタンスとaの偶数インスタンスを$
置き換えるだけです。だから\(
$
\)
Here is Einstein's equation $E=mc^2$ and here is Newton's law $F=ma$
しなければならない
Here is Einstein's equation \(E=mc^2\) and here is Newton's law \(F=ma\)
連続して表示される項目は$
同じ行にありますが、複数行がある場合もあります。ファイル全体で交換を行いたいです。どんな助けでも大変感謝します。
答え1
GNUの使用sed
:
sed -Ez 's/\$([^$]*)\$/\\(\1\\)/g'
またいいえ-E
:
sed -z 's/\$\([^$]*\)\$/\\(\1\\)/g'
これ-z
により、GNUはsed
入力全体を1行として扱います。これは標準機能の拡張ですsed
。
答え2
$
次の各単語境界をに置き換え、次の\(
各$
単語境界を次に置き換えます\)
。
sed -e 's/\$\</\\(/g' -e 's/\>\$/\\)/g' file
GNUユーザーはおよび単語の境界としてsed
使用できますが、置き換えも可能です。 BSDユーザーは表示されていると使用できますが、必要に応じて使用することもできます(macOSユーザーと\<
\>
\b
\<
\>
[[:<:]]
[[:>:]]
基本 sed
[[:<:]]
)を使用する必要があります[[:>:]]
。