推荐一下白杨的几个命令行查找替换工具,比CMD自带的findstr强大,也有比grep优越的地方。很好用。在CCF看到的。顺便转一下。
http://www.baiy.cn/
1、命令行工具f - 在文件中查找匹配的字符串
功能简介
* 支持一次性指定多个文件通配符和文件列表。
* 支持管道模式,与其它命令协同工作。
* 支持包含子目录,与 grep 不同,即使查找目录中不包含任何匹配文件,也会继续子目录查找。
* 支持普通匹配、正则匹配、可忽略大小写、可跨行匹配。
* 同时支持 posix 标准的扩展正则表达式及 perl 风格的正则匹配。
* 支持 DOS(Windows)、Macintosh 和 unix 风格的换行符,可选择自动识别(默认)或手动指定。
* 可完全自定义的匹配结果输出格式,更方便查看或与其它软件配合。
* 统计功能,列出每个文件中的匹配次数、总匹配次数等,也可以仅列出发现匹配的文件列表。
* 支持Win32和纯DOS环境(纯DOS环境中需要 HX DOS Extender 支持)。
典型应用
1. 在命令行中单独使用,或作为管道过滤器使用。例如:“expand -d *.cab | f -ric:g.*.(dll|exe)”在当前目录下的所有cab文件中查找g开头的dll或exe文件。
2. 在批处理中应用
3. 与其它工具配合使用,例如:vim中键入:“:set grepprg=f\ /o:F:l:o”后,可以为vim加入批量匹配的功能。这时使用vim命令:“:grep *.h *.c *.cpp *.hpp *.cxx /s /r:test.*string”搜索当前目录及子目录下所有源文件。之后可以使用 :cn 命令跳转到下一个匹配;:cnf 命令跳转到下一个文件中的第一个匹配等等。
引用: 作者: lyh728 sed sed 还有lz 的工具 比grep 强在哪里?
这个,功能简介里都说了,呵呵。
总结一下大概有几条:
1. grep带子目录搜索时,如果搜索开始的那个目录里没有满足通配符的文件,则搜索终止,不会检查子目录。 例如: grep -r -i 'test' *.cpp 如果当前目录下没有 .cpp 文件,但子目录下有,grep会失败而不会搜索子目录。
2. 多文件通配符支持,可以这样:f *.h *.cpp *.c *.txt /s ....。grep好像不行。
3. 一些零碎的改进,像自定义输出格式等等。
-----------------------------------------------------------
2、find - replace
fr - 在文件中批量查找并替换匹配的字符串
最后更新:2009-12-13, Ver 2.1.6.1213
* 支持一次性指定多个文件通配符和文件列表。
* 支持管道模式,与其它命令协同工作;支持半管道模式,从文件中获取输入,但将结果写到标准输出。
* 支持包含子目录。
* 支持普通匹配、正则匹配、可忽略大小写、可跨行匹配。替换时可以使用正则的子表达式。
* 支持 TCL 8.2 兼容的高级正则表达式(ARE)。
* 同时支持 posix 标准的扩展正则表达式及 perl 风格的正则匹配。
* 可以格式化替换内容为全大写或全小写,便于在批处理中对环境变量和命令行参数做大小写一致化处理。
* 支持 DOS(Windows)、Macintosh 和 unix 风格的换行符,可选择自动识别(默认)或手动指定。
* 支持 Win32 和纯 DOS 环境(纯DOS环境中需要 HX DOS Extender 支持)。
* 支持 POSIX 环境,提供 linux x86/x64、FreeBSD、NetBSD、Solaris 等版本下载。
------------------------------------------------------------
3、wide find - replace
wfr
- 支持多国语言的字符串批量查找和替换
- 批量字符集编码转换
最后更新:2009-12-13, Ver 2.3.6.1213
* 纯 unicode 规则匹配内核,真正支持各国语言文字的正则匹配。
* 支持 TCL 8.2 兼容的高级正则表达式(ARE)。
* 带有兼容性检查的字符集编码转换功能。同时支持 GUN libiconv(iconv.dll) 和 Windows 自带的字符集编码转换 API。
* 支持一次性指定多个文件通配符和文件列表。
* 支持管道模式,与其它命令协同工作;支持半管道模式,从文件中获取输入,但将结果写到标准输出。
* 支持包含子目录。
* 支持普通匹配、正则匹配、可忽略大小写、可跨行匹配。替换时可以使用正则的子表达式。
* 同时支持 posix 标准的扩展正则表达式及 perl 风格的正则匹配。
* 可以格式化替换内容为全大写或全小写,便于在批处理中对环境变量和命令行参数做大小写一致化处理。
* 支持 DOS(Windows)、Macintosh 和 unix 风格的换行符,可选择自动识别(默认)或手动指定。
* 统计功能,列出每个文件中的替换次数、总替换次数等。
* 支持 Win32 和纯 DOS 环境(纯DOS环境中需要 HX DOS Extender 支持)。
* 支持 POSIX 环境,提供 linux x86/x64、FreeBSD、NetBSD、Solaris 等版本下载。
在上面的主页还有其他一些命令行工具,各位可以按需查找。