
これを行う方法があることは知っていますsed
が、うまくいきません。 で強調表示された数式を含む LaTeX ファイルがあります$
。これを MathJax コードに変換したいと思います。これには、 の奇数インスタンス$
を に置き換え\(
、 の偶数インスタンス$
を に置き換えるだけです\)
。
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'
GNU-z
はsed
入力全体を 1 行として読み込みます。これは標準機能の拡張ですsed
。
答え2
$
単語境界の直前にある各 を に置き換え\(
、$
単語境界の直後にある各 を に置き換えます\)
。
sed -e 's/\$\</\\(/g' -e 's/\>\$/\\)/g' file
GNUユーザーは単語の境界にと をsed
使用できますが、代わりに を使用することもできます。BSDユーザーは示されているようにと を使用できますが、必要に応じてと を使用することもできます(macOSユーザーは\<
\>
\b
\<
\>
[[:<:]]
[[:>:]]
デフォルト sed
[[:<:]]
および を使用する必要があります[[:>:]]
。