2

プロジェクトでいくつかのリファクタリングを実行しています。多くの (ほとんどの場合) 使い捨てのローカル定数を自動的に置き換えたいと考えています。IDE を使用して、検索と置換を行うことができますが、多くのクリックが必要であり、多くの変数を含むファイルがたくさんあります (すべてが特定のフォルダーの下にあり、その下にあるだけなので、フォルダー上のすべてのファイルに適用できます)。次の中途半端な正規表現は、必要な置換を行います。

Search string: (constant variable string )([a-zA-Z_]+)( = )("[A-Za-z\.]+")(;.*)(\2)(?![a-zA-Z_])
Replacement:   $1$2$3$4$5$4

これは見苦しく、実用的ではありません。目的の動作しか示していません。つまり、宣言を見つけて、次に出現する変数をその値に置き換えます。一部の定数は使い捨てではないため、これをすべての定数に複数回適用する必要があります。最後に、宣言自体を削除するには、別の検索が必要です。

私は Ubuntu を使用しているので、これには bash が適していると思いますが、私は Linux の初心者であり、この種のタスク用のスクリプトを見つけることができませんでした。これを言語自体でコーディングすることもできますが、確かにもっと時間がかかります。

誰でもこれを行う方法を教えてもらえますか? このケースに適応できるいくつかの例も素晴らしいでしょう。


編集:PHPスクリプトで難しい方法で行われました。

4

1 に答える 1

1

セッドはあなたの友達です

sed -i -e 's/original/replacement/g' files

ここで、ファイルは *.c などの glob パターンにすることができます。

より強力な機能が必要で、特殊文字の問題が発生した場合は、perl も調べる必要があるかもしれません。後者には、このようなことを行うためのツールがはるかに多いからです。

于 2012-05-04T17:37:48.753 に答える