2012-05-04 1 views
2

私はプロジェクトでいくつかのリファクタリングを実行していますが、(ほとんど)単一使用ローカル定数の多くを自動的に置き換えたいと思います。 IDEを使用すると検索ができますが、多くのクリックが必要ですし、多くの変数を含むたくさんのファイルがあります(すべてがフォルダの下にあるので、フォルダのすべてのファイルに適用できます)。ソースコード変数search-replace(bash?)

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

それは醜いと実用的ではないが、それだけで希望の動作を示しています:宣言を見つけ、その値を持つ変数の次の発生を置き換える、次の中途半端な正規表現は、希望の交換を行います。私はこれを1回限りではないので、定数ごとに複数回適用する必要があります。最後に、宣言自体を削除するために別の検索が必要になります。

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

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


編集:PHPスクリプトを使用すると難しい方法です。 sedの

+0

これはどの言語とIDEですか?最も良いIDEにはリファクタリングの組み込みが組み込まれています。 @ Zac Thompson - Eclipse。 –

+0

これはインラインのリファクタリングですが、複数の変数には適用できません。 – user1183250

+2

私は正面から言いますが、これは正規表現ではできません。 – Kevin

答えて

1

あなたの友人であるファイルは、そのようなの* .cなどとしてグロブパターンをすることができ

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

あなたは、あなたが見たいと思うかもしれませんより多くの電力を必要と特殊文字の問題に実行する場合、後者にはこのようなことをするためのツールがはるかに多いため、perlも同様です。

+0

ありがとう、しかし、この単純な置換コマンドでは私の場合は十分ではありません。私は、変数の名前を見つけて、それらをファイル上でさらに置き換える必要があります。 – user1183250