文字列の偶数および奇数反復を別の文字列に置き換える

文字列の偶数および奇数反復を別の文字列に置き換える

これを行う方法があることを知っていますが、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[[:<:]])を使用する必要があります[[:>:]]

関連情報