中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-12 08:11
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [推荐]推荐几个增强的正则表达式查找、替换工具 查看 1,394 回复 7
楼 主 [推荐]推荐几个增强的正则表达式查找、替换工具 发表于 2010-05-09 10:27 ·  中国 广西 贵港 联通
初级用户
积分 46
发帖 24
注册 2006-12-13 23:06
19年会员
UID 73425
性别 男
状态 离线
推荐一下白杨的几个命令行查找替换工具,比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 等版本下载。

在上面的主页还有其他一些命令行工具,各位可以按需查找。
2 发表于 2010-05-09 11:33 ·  中国 重庆 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
wfr会被很多杀软干掉,尽量少用吧。
3 发表于 2010-05-09 11:43 ·  中国 北京 联通
银牌会员
★★★★
[b]看你妹啊[/b]
积分 1,488
发帖 1,357
注册 2006-05-20 12:00
20年会员
UID 55770
状态 离线
这个就不用发了,发过很多次了。

有问题请发论坛或者自行搜索,再短消息问我的统统是SB
4 发表于 2010-05-09 13:39 ·  中国 广西 贵港 联通
初级用户
积分 46
发帖 24
注册 2006-12-13 23:06
19年会员
UID 73425
性别 男
状态 离线
Originally posted by HAT at 2010-5-9 11:33 AM:
wfr会被很多杀软干掉,尽量少用吧。

误报而已,最新的杀软已经不报了。白杨自己也在主页中说明,可能会误报。用UPX解压缩一下就可以了。
下面为http://virusscan.jotti.org网站扫描的结果。
http://virusscan.jotti.org/en/scanresult/f12ff5d43be254442919483a8d13601d248b576c
附件
scan.png
5 发表于 2010-05-09 15:21 ·  中国 吉林 延边朝鲜族自治州 延吉市 电信
银牌会员
★★★
正在学习中的菜鸟...
积分 1,039
发帖 897
注册 2009-03-01 15:34
17年会员
UID 140302
性别 男
来自 在地狱中仰望天堂
状态 离线
6 发表于 2010-05-09 16:32 ·  中国 广西 贵港 联通
初级用户
积分 46
发帖 24
注册 2006-12-13 23:06
19年会员
UID 73425
性别 男
状态 离线
是他的作品啊。楼上的名字好熟,是那个寒星随意录的寒星吗?
7 发表于 2010-05-09 17:16 ·  柬埔寨
初级用户
★★
积分 99
发帖 53
注册 2006-08-18 18:44
19年会员
UID 60809
状态 离线
这个工具在论坛介绍的次数太多了。说到正则,楼主最好接触一下SED,用好SED才是王道。
8 发表于 2010-05-09 17:43 ·  中国 广西 贵港 联通
初级用户
积分 46
发帖 24
注册 2006-12-13 23:06
19年会员
UID 73425
性别 男
状态 离线
Originally posted by asnahu at 2010-5-9 05:16 PM:
这个工具在论坛介绍的次数太多了。说到正则,楼主最好接触一下SED,用好SED才是王道。

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

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