すべてのファイル内の文字列を検索して置換する

すべてのファイル内の文字列を検索して置換する

これは厳密には LaTeX に関する質問ではないかもしれませんが、他の人も時々同じ問題を抱えているかもしれないので、ここで質問を投稿することにしました。

私は現在、たくさんの方程式を含むかなり大きな文書に取り組んでいます。次のように書く代わりに、

    Q^{h}_{Con} = 0.15 \cdot Q^{h}_{Transm} + ...

私はむしろこれをやりたいです:

\newcommand{\qCon}{Q^{h}_{Con}}
\newcommand{\qTransm}{Q^{h}_{Transm}}
...
\qCon = 0.15 \cdot \qTransm + ...

文書を書き始めるときにそのアイデアがあれば、これを行うのは難しくありません。ただし、私の場合は、すでに多くのページが書かれています (命名法を含む)。ここで、eg のすべての言及$Q^{h}_{Con}$を に置き換えたい$\qCon$と思います。これを行うと、どこかにタイプミスがないことを確認できます$Q^{h}_{Com}$

すべてのファイルを個別に調べるのは非常に複雑で、私が使用している TEX エディタでは、開いているすべてのファイルに対して検索と置換しか実行できません。そこで、ターミナル (Mac 上) を使用して検索と置換を実行しようとしました。 'grep' を使用して eg のすべてのインスタンスを見つけることはできました$Q^{h}_{Con}$が、 を に置き換える方法がわかりませんでした$\qCon$

誰かアイデアはありますか?

答え1

何かのようなもの

for i in *.tex
do
sed -i -e 's/Q^{h}_{\([a-zA-Z]*\)}/\\q\1 /g' $i
done

おそらく何かが起こります。(まずファイルのコピーを保存してください:-)

関連情報