1

ファイルを編集していて、のすべての出現箇所を見つけたい

\smash{example}
\smash{$example2$}

と置き換えます

\smash{\small{example}}
\smash{\small{$example2$}}

それぞれ、コマンドラインで「sed」のようなものを使用します。これを行う方法について何か助けはありますか?

4

1 に答える 1

0

これはそれを行います:

sed -r 's/(\\smash\{)([^\}]+\})/\1\\small\{\2\}/g' <filename>

次のように機能します。

  • sed正規表現を使用してテキストの置換を実行するために使用しますsed 's/<regexp>/<replacement>/'
    • このオプションでは、拡張正規表現(およびグループ-rへの参照が必要)が可能であり、最後にあるは、に一致するすべてのテキストに置換を適用する必要があることを意味します。\1\2g<regexp>
    • <regexp>パターン: 2つの(\\smash\{)([^\}]+\})グループに分けられます:
      1. (\\smash\{)文字列の最初の部分をキャプチャしてグループに入れるだけです\1
      2. ([^\}]+\})これは大まかに「あなたが得るまで文字のシーケンスを読んで、}それをグループ2に入れる\2」と言っています
    • \1これで、パーツ内のと\2グループを使用して、それらの間に<replacement>挿入でき\\small{ます。また、グループ2が挿入された後に仕上げ}が追加されます。

詳細についてはsed、これらの最初の数段落regular expressionsを読むことから始めてください。

于 2012-08-05T11:54:30.983 に答える