Wfr命令详解解析.doc
文本预览下载声明
简介
wfr? - 支持多国语言的字符串批量查找和替换 - 批量字符集编码转换
纯 unicode 规则匹配内核,真正支持各国语言文字的正则匹配。
带有兼容性检查的字符集编码转换功能。同时支持 libiconv(iconv.dll) 、IBM libicu 和 Windows 自带的字符集编码转换 API。
支持 TCL 8.2 兼容的高级正则表达式(ARE)。
支持一次性指定多个文件通配符和文件列表。
支持管道模式,与其它命令协同工作;支持半管道模式,从文件中获取输入,但将结果写到标准输出。
支持包含子目录。
支持普通匹配、正则匹配、可忽略大小写、可跨行匹配。替换时可以使用正则的子表达式。
同时支持 posix 标准的扩展正则表达式及 perl 风格的正则匹配。
可以格式化替换内容为全大写或全小写,便于在批处理中对环境变量和命令行参数做大小写一致化处理。
支持 DOS(Windows)、Macintosh 和 unix 风格的换行符,可选择自动识别(默认)或手动指定。
统计功能,列出每个文件中的替换次数、总替换次数等。
支持 Win32 和纯 DOS 环境(纯DOS环境中需要 HX DOS Extender 支持)。
支持 POSIX 环境,提供 linux x86/x64、FreeBSD、NetBSD、Solaris 等版本下载。
更新历史
2013-11-19, Ver 2.3.9-1119
UPD: 在 -s 模式下,默认忽略无法访问的子文件夹。
2009-12-13, Ver 213
NEW: 新增 -errstop 参数。使用此参数时,遇到无法访问的文件和子目录会报错并自动终止查找。不使用此参数时,fr 会自动跳过无法访问的子目录。对于无法读写的文件,fr 会输出一行报错信息,但不会终止搜索。
2009-03-12, Ver 312
FIX: 修正了在使用 /r 或 /ric 参数并且使用 ARE p 和 s 模式进行匹配时,^ 有时仍然会匹配行首的问题。???? 例如:在 dos 格式的文件中,/r:***:(?p)(^.*)\n 会匹配所有行,而不仅仅是文件的第一行。UPD: 现在 -exp 默认为开启状态,要禁用此选项,需要指定 -noexp 开关。
2008-09-09, Ver 909
UPD: 增强了正则行首锚点 ^ 的适应性。
2008-09-08, Ver 908
FIX: 纠正了正则表达式零长匹配时会出现无限循环的问题(例如,在内容“aaa.bbb”中将“[^.]*”替换为“z”)。FIX: 纠正了正则行首锚点解析不正确的问题(例如,在内容“ccc”将“^c”替换为“z”)。
2008-08-16, Ver 15
新增高级正则表达式(ARE)支持
2007-01-20, Ver 20
新增 -exp 选项,开启该选项后,程序的内存使用量将增加一倍,但是在很多情况下,其处理速度将得到极大改善。碰到性能问题的弟兄们可以试试。该算法使用额外的内存消除了原地替换时带来的内存抖动,所以文件中要替换的值越多,算法带来的性能提升就越明显。在 siwen@CCF 兄提供给我的样本上测试,开启了 -exp 选项以后,fr 完成任务的时间从 1小时 降低到 1.5 秒(文件体积 8.5MB,文件中需要替换的项目为 25 万项)。
所谓 Unicode 正则匹配
wfr 内部使用完全基于 UNICODE 的高效正则引擎,能够完成各种国际化条件的正则匹配。以下举例说明:
小写类能够正确匹配各国小写字母。如:中文全角字母“abcd”;希腊字母“α、β、ω”;俄文字母“ж、я、щ” 等等。
大写类能够匹配各国大写字母。如:全角字母“ABCD”;希腊字母“Α、Β、Ω”;俄文字母“Ж、Я、Щ”等等。
字符类能匹配各国字母(中日韩的汉字也属于该类)。
标点类能够匹配各国标点符号,如:“、,。……『』”等等。
所有操作都支持宽字符,例如,表达式:“[我你他她它]们”将被正确处理。
其它(数字、空白符、词边界等等)以此类推,全方位支持多语言。以上字符分类的规则遵循UNICODE标准分类(UNICODE General Category Values)具体请参考:/versions/Unicode4.0.0/ch04.pdf。关于 UNICODE 正则的操作效率,这个引擎比我能找到的所有开源的非 UNICODE 匹配引擎至少快一倍左右(因为所有字符类的匹配都是直接查表映射的,都是标准 O(1) 算法)。不过这只是匹配引擎的效率,由于所有文件在“匹配-替换”前后都要做一次编码转换,所以典型应用下,wfr 效率比 fr 低一些。wfr 并不是 fr 的升级版,能够
显示全部