コード内の値を見つけて置き換えるために、どのツールまたは方法をお勧めしますか? コードが Linux/Unix 上にある場合、find と grep が最善の方法ですか?
6 に答える
大きなコードベースを検索するために設計されたackを見てください。
置換については、Perl の -i、-p、および -e フラグを見てください。次のようなことができます:
$ perl -i -p -e's/\bthisword\b/thatword/g' $(find . -name *.html)
ツリー内のすべての .html ファイルで、thisword のすべてのインスタンスを thatword に置き換えます。
find
grep
探している単語が見つかりますが、それを置き換えるには、、またはお気に入りのストリーム編集フィルターを使用する必要が ありsed
ますawk
。
groovy
、、python
はperl
すべて検索/置換操作を実行します-お気に入りを使用するか、1つを選択して学習します。
コードベースでの操作についてはfind | sed
、単純な操作(cygwin
あなたの友達です)と、より複雑な操作のための正規表現サポートを備えたIDEの検索/置換に使用します。Eclipse、Idea、Visual Studio、さらにはSQL Server Manglement Studioにも、強力な検索/置換機能があります。悪いニュースは、それらのすべてが同じ正規表現構文を使用しているわけではないということです。
変数の名前を変更するつもりだと思います。
コードの本体が何であるかによって異なります。C# の場合、Visual Studio の名前変更ツールは非常に優れています。確実に機能させるには、コンパイラ/インタープリターと連携して名前を変更する必要があることに注意してください。これにより、正しいスコープでのみ変更を行うことができます。
それが非常に単純な検索/置換である場合、確かに低機能のメモ帳で問題ないでしょうか?
PowerGrep を調べてみてください... SO のいたるところに広告があります。本当は必要ないのに欲しくなってしまう――
PD: 彼らは 15 日間無料のデモを持っているので、これが小規模な仕事であれば、デモを使用することができます.
これは、アンディの上記の受け入れられた回答へのヒントにすぎません。評判が低いため、これをコメントとして追加できませんでした
使用する !文字列をエスケープするのに苦労するときの区切りとして
例: $ perl -i -p -e's!\bthisword\b!thatword!g' $(find . -name *.html)
find と grep は indecies を作成しないため、作成する代替手段よりも常に遅くなります。とはいえ、コードベースが数十ファイルしかない場合は問題なく動作します.in Fi
Eclipse には優れたファイル検索機能 (Ctrl+H) があります。適切なプラグインがあれば、言語のセマンティクスも考慮に入れることができます (もちろん、Java はそのままで動作します)。唯一の注意点は、特定のファイル セットを最初に検索するときに少し遅くなる可能性があることです。