搜索代码库中特定单词的最佳工具或方法是什么?
-
04-07-2019 - |
题
您建议在代码中查找和替换值的工具或方法是什么?如果代码在Linux / Unix上,那么找到最好的方法吗?
解决方案
查看专为搜索大型代码库而设计的 ack 。
要替换,请查看Perl的-i,-p和-e标志。你可以这样做:
$ perl -i -p -e's/\bthisword\b/thatword/g' $(find . -name *.html)
在树中的所有.html文件中用thisword替换thisword的所有实例。
其他提示
我假设您打算重命名变量。
这取决于代码体是什么。对于C#,Visual Studio的重命名工具非常好。请记住,为了使其可靠地工作,您需要重命名与编译器/解释器一起工作,这样您就可以确保只在正确的范围内进行更改。
如果这是一个非常简单的查找/替换,那么低位的记事本肯定能做好工作吗?
find
和 grep
会找到您要查找的单词,但要替换它,您需要使用 sed
, awk
或您最喜欢的流编辑过滤器。
groovy
, python
, perl
都将进行搜索/替换操作 - 使用您喜欢的或选择一个来学习。
对于代码库上的操作,我将使用 find | sed
用于简单操作( cygwin
是你的朋友)和IDE的搜索/替换,正则表达式支持更复杂的操作。 Eclipse,Idea,Visual Studio甚至SQL Server Manglement Studio都具有强大的搜索/替换功能。坏消息是并非所有这些都使用相同的正则表达式语法。
看一下PowerGrep ......它在SO中到处都有广告。即使我真的不需要它,我也开始想要它 -
PD:他们有15天的免费演示,所以如果这是一个小工作,你可以使用演示。这只是安迪上面接受的答案的一个提示。由于声誉较低,不能将此作为评论添加
使用!作为一个分离者,当你有困难的时间逃避字符串
例如$ perl -i -p -e's!\ bthisword \ b!thatword!g'$(find。-name * .html)
find和grep不会构建不一致,因此它们总是会比那些替代品慢。也就是说,如果您的代码库只有几十个文件,它们可以正常工作。在Fi
中Eclipse有一个很好的文件搜索功能(Ctrl + H)。如果你有合适的插件,Java也可以考虑语言语义(Java当然是开箱即用的)。唯一需要注意的是,第一次搜索某个文件集时它可能会有点慢。