2

您推荐什么工具或方法来查找和替换代码中的值?如果代码在 Linux/Unix 上,find 和 grep 是最好的方法吗?

4

6 回答 6

7

看看ack,它是为搜索大型代码库而设计的。

要替换,请查看 Perl 的 -i、-p 和 -e 标志。您可以执行以下操作:

$ perl -i -p -e's/\bthisword\b/thatword/g' $(find . -name *.html)

在树中的所有 .html 文件中用那个词替换这个词的所有实例。

于 2008-10-23T19:59:26.573 回答
1

我假设您打算重命名一个变量。

这取决于代码主体是什么。对于 C#,Visual Studio 的重命名工具非常好。请记住,要使其可靠地工作,您需要重命名与编译器/解释器一起工作,因此您可以确保只在正确的范围内进行更改。

如果它是一个非常简单的查找/替换,那么低级记事本肯定会做得很好吗?

于 2008-10-23T19:52:17.820 回答
1

findgrep会找到您要查找的单词,但要替换它,您需要使用 sedawk或您最喜欢的流编辑过滤器。

groovy, python,perl都将进行搜索/替换操作 - 使用您喜欢的或选择一个来学习。

对于代码库上的操作,我将使用find | sed简单的操作(cygwin是你的朋友)和 IDE 的搜索/替换为更复杂的操作的正则表达式支持。Eclipse、Idea、Visual Studio 甚至 SQL Server Manglement Studio 都有强大的搜索/替换功能。坏消息是并非所有人都使用相同的正则表达式语法。

于 2008-10-23T20:08:59.037 回答
1

看看 PowerGrep ......它在 SO 中到处都有广告。即使我真的不需要它,我也开始想要它-

PD:他们有 15 天的免费演示,所以如果这是一项小工作,你可以使用演示。

于 2008-10-23T20:25:20.047 回答
1

这只是安迪上述已接受答案的提示。由于声誉较低,无法将此添加为评论

采用 !当您难以摆脱字符串时作为分隔符

例如 $ perl -i -p -e's!\bthisword\b!thatword!g' $(find . -name *.html)

于 2009-05-02T00:48:24.607 回答
0

find 和 grep 不会构建 indecies,因此它们总是会比其他替代品慢。也就是说,如果您的代码库只有几十个文件,它们就可以正常工作。在 Fi

Eclipse 有一个很好的文件搜索功能(Ctrl+H)。如果您有正确的插件,它还可以考虑语言语义(当然,Java 开箱即用)。唯一需要注意的是,第一次在某个文件集中搜索可能会有点慢。

于 2008-10-23T19:53:02.267 回答