0

大きな LaTeX ドキュメントがあり、絶対値表記を使用した場所の書式設定を変更したいと考えています。理想的にはこれを自動的に行うのですが、そのための正規表現を構築する方法がわかりません。

このサイトの他の質問を見てきましたが、多くは (foo) を abs(foo) に置き換える方法を扱っていますが、問題は「(」と「)」が異なる文字であり、開始と終了が絶対値であることです。括弧は同じです。

どうにかして「|」を数えなければならないと思っています。インスタンスを使用して、偶数または奇数が発生しているかどうかを確認します。

| という仮定の下で作業しています。ふー | バー | バズ | は常に abs(foo) bar abs(baz) に変換されます。つまり、ネストはありません。

これを行う方法はありますか?grep は少し使用しましたが、sed や perl はあまり使用していないため、検索と置換の方法がわかりません。

4

1 に答える 1

4

このsed行を試してください:

sed -r 's/([^|]*)\|([^|]+)\|/\1abs(\2)/g' file.tex

ノート

  • 私は-rいくつかのエスケープを保存するために使用されます。

  • この置換は危険です。テストする必要があります。sed はあなたのテキストを知らないので、どのケースが絶対値表記であるか、どのケースが論理または表記であるか、またはビットごとの「または」操作であるかを知りません。あなたのテキストにそれらがある場合。

あなたの例で:

kent$  echo " | foo | bar | baz |"|sed -r 's/([^|]*)\|([^|]+)\|/\1abs(\2)/g'                                                                                                
 abs( foo ) bar abs( baz )
于 2013-05-24T21:59:39.597 に答える