Board logo

标题: [推荐]推荐几个增强的正则表达式查找、替换工具 [打印本页]

作者: fastrun     时间: 2010-5-9 10:27    标题: [推荐]推荐几个增强的正则表达式查找、替换工具

推荐一下白杨的几个命令行查找替换工具,比CMD自带的findstr强大,也有比grep优越的地方。很好用。在CCF看到的。顺便转一下。
http://www.baiy.cn/

1、命令行工具f - 在文件中查找匹配的字符串

功能简介
* 支持一次性指定多个文件通配符和文件列表。     
* 支持管道模式,与其它命令协同工作。     
* 支持包含子目录,与 grep 不同,即使查找目录中不包含任何匹配文件,也会继续子目录查找。     
* 支持普通匹配、正则匹配、可忽略大小写、可跨行匹配。   
* 同时支持 posix 标准的扩展正则表达式及 perl 风格的正则匹配。     
* 支持 DOS(Windows)、Macintosh 和 unix 风格的换行符,可选择自动识别(默认)或手动指定。     
* 可完全自定义的匹配结果输出格式,更方便查看或与其它软件配合。     
* 统计功能,列出每个文件中的匹配次数、总匹配次数等,也可以仅列出发现匹配的文件列表。     
* 支持Win32和纯DOS环境(纯DOS环境中需要 HX DOS Extender 支持)。


  Quote:
   
典型应用

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 命令跳转到下一个文件中的第一个匹配等等。



  Quote:
引用: 作者: 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 等版本下载。

在上面的主页还有其他一些命令行工具,各位可以按需查找。
作者: HAT     时间: 2010-5-9 11:33
wfr会被很多杀软干掉,尽量少用吧。
作者: yishanju     时间: 2010-5-9 11:43
这个就不用发了,发过很多次了。
作者: fastrun     时间: 2010-5-9 13:39


  Quote:
Originally posted by HAT at 2010-5-9 11:33 AM:
wfr会被很多杀软干掉,尽量少用吧。

误报而已,最新的杀软已经不报了。白杨自己也在主页中说明,可能会误报。用UPX解压缩一下就可以了。
下面为http://virusscan.jotti.org网站扫描的结果。
http://virusscan.jotti.org/en/sc ... 83a8d13601d248b576c
附件 1: scan.png (2010-5-9 13:39, 85.66 K)



作者: Hanyeguxing     时间: 2010-5-9 15:21
什么叫白杨的呢?
作者: fastrun     时间: 2010-5-9 16:32
是他的作品啊。楼上的名字好熟,是那个寒星随意录的寒星吗?
作者: asnahu     时间: 2010-5-9 17:16
这个工具在论坛介绍的次数太多了。说到正则,楼主最好接触一下SED,用好SED才是王道。
作者: fastrun     时间: 2010-5-9 17:43


  Quote:
Originally posted by asnahu at 2010-5-9 05:16 PM:
这个工具在论坛介绍的次数太多了。说到正则,楼主最好接触一下SED,用好SED才是王道。

感谢推荐和指导。
也是今天偶然要临时用命令行正则才翻到的。平时Emeditor基本就够用了。

搜索SED命令好强大。第一眼看去有点头大。
回头有空再慢慢研究一下。