Wfr命令详解资料.docx
- 文档编号:28227275
- 上传时间:2023-07-09
- 格式:DOCX
- 页数:75
- 大小:66.75KB
Wfr命令详解资料.docx
《Wfr命令详解资料.docx》由会员分享,可在线阅读,更多相关《Wfr命令详解资料.docx(75页珍藏版)》请在冰豆网上搜索。
Wfr命令详解资料
简介
wfr
-支持多国语言的字符串批量查找和替换
-批量字符集编码转换
纯unicode规则匹配内核,真正支持各国语言文字的正则匹配。
带有兼容性检查的字符集编码转换功能。
同时支持libiconv
(iconv.dll)、IBMlibicu和Windows自带的字符集编码转换API。
支持TCL8.2兼容的高级正则表达式(ARE)。
支持一次性指定多个文件通配符和文件列表。
支持管道模式,与其它命令协同工作;支持半管道模式,从文件中获取输入,但将结果写到标准输出。
支持包含子目录。
支持普通匹配、正则匹配、可忽略大小写、可跨行匹配。
替换时可以使用正则的子表达式。
同时支持posix标准的扩展正则表达式及perl风格的正则匹配。
可以格式化替换内容为全大写或全小写,便于在批处理中对环境变量和命令行参数做大小写一致化处理。
支持DOS(Windows)、Macintosh和unix风格的换行符,可选择自动识别(默认)或手动指定。
统计功能,列出每个文件中的替换次数、总替换次数等。
支持Win32和纯DOS环境(纯DOS环境中需要HXDOSExtender支
持)。
支持POSIX环境,提供linuxx86/x64、FreeBSD、NetBSD、Solaris等版本下载。
更新历史
2013-11-19,Ver2.3.9-1119
UPD:
在-s模式下,默认忽略无法访问的子文件夹。
2009-12-13,Ver2.3.6.1213
NEW:
新增-errstop参数。
使用此参数时,遇到无法访问的文件和子
目录会报错并自动终止查找。
不使用此参数时,fr会自动跳过无法访问的子目录。
对于无法读写的文件,fr会输出一行报错信息,但不会终止搜索。
2009-03-12,Ver2.3.5.0312
FIX:
修正了在使用/r或/ric参数并且使用ARE'p'
进行匹配时,'^'有时仍然会匹配行首的问题。
例如:
在dos格式的文件中,/r:
"***:
(?
p)(^.*)\n"
配所有行,而不仅仅是文件的第一行。
和
's'
模式
会匹
UPD:
现在-exp默认为开启状态,要禁用此选项,需要指定-noexp开关。
2008-09-09,Ver2.3.4.0909
UPD:
增强了正则行首锚点'^'的适应性。
2008-09-08,Ver2.3.3.0908
FIX:
纠正了正则表达式零长匹配时会出现无限循环的问题(例如,在内容“aaa.bbb”中将“[^.]*”替换为“z”)。
FIX:
纠正了正则行首锚点解析不正确的问题(例如,在内容“ccc”将
“^c”替换为“z”)。
2008-08-16,Ver2.3.2.715
新增高级正则表达式(ARE)支持
2007-01-20,Ver2.3.1.120
新增-exp选项,开启该选项后,程序的内存使用量将增加一倍,但是在很多情况下,其处理速度将得到极大改善。
碰到性能问题的弟兄们可以试试。
该算法使用额外的内存消除了原地替换时带来的内存抖动,所以文件中要替换的值越多,算法带来的性能提升就越明显。
在siwen@CCF兄提供给我的样本上测试,开启了-exp选项以后,fr完成任务的时间从1小时降低到1.5秒(文件体积8.5MB,文件中需要替换的项目为25万项)。
所谓Unicode正则匹配
wfr内部使用完全基于UNICODE的高效正则引擎,能够完成各种国际化条件的正则匹配。
以下举例说明:
小写类能够正确匹配各国小写字母。
如:
中文全角字母“abcd”;希腊字母“α、β、ω”;俄文字母“ж、я、щ”等等。
大写类能够匹配各国大写字母。
如:
全角字母“ABCD”;希腊字母“Α、Β、Ω”;俄文字母“Ж、Я、Щ”等等。
字符类能匹配各国字母(中日韩的汉字也属于该类)。
标点类能够匹配各国标点符号,如:
“、,。
,『』”等等。
所有操作都支持宽字符,例如,表达式:
“[我你他她它]们”将被正
确处理。
其它(数字、空白符、词边界等等)以此类推,全方位支持多语言。
以上字符分类的规则遵循UNICODE标准分类(UNICODEGeneralCategoryValues)
具体请参考:
http:
//www.unicode.org/versions/Unicode4.0.0/ch04.pdf。
关于UNICODE正则的操作效率,这个引擎比我能找到的所有开源的非UNICODE匹配引擎至少快一倍左右(因为所有字符类的匹配都是直接查表映射的,都是标准O
(1)算法)。
不过这只是匹配引擎的效率,由于所有文件在“匹配->替换”前后都要做一
次编码转换,所以典型应用下,wfr效率比fr低一些。
wfr并不是fr的升级版,能够用fr搞定的任务不推荐用wfr完成。
关于字符集编码
wfr支持分别指定三个参量的字符集编码:
1.输入编码:
输入文件或管道中内容的字符集编码。
默认为当前系统的默认代码页。
2.输出编码:
完成搜索->替换操作后,要输出到目标文件或管道中的编码。
默认与输入编码相同。
3.参数编码:
指定搜索和替换参数的内容使用何种字符集编码。
默认为
当前系统的默认代码页。
例如:
“wfr*.txt
*.htm
-r:
"[
и
ウ]
"-t:
"
狟ね
"-encarg:
big5
-encin:
gbk-encout:
utf-8-s”把当前目录和所有子目录下的任何txt
及htm文件中的“[你我他她它]们”都替换为“朋友们”;文件的编码
为:
gbk,参数使用big5指定,替换后将文件格式改为utf-8编码保
存。
咋一看指定参数编码好像没用,其实不然。
例如在异种语言环境下(如在中文系统下操作韩文)的搜索替换;在DOS下使用wfr(DOS的系统默认代码页永远是ASCII)等场合,指定参数编码是很有意义的。
关于字符集转换功能库,如果当前系统搜索路径中存在GUN的libiconv库(iconv.dll),则优先使用libiconv,否则使用操作系统自带的字符集转换API。
这样做的考虑如下:
更严谨和稳定的结果:
iconv比Windows的字符集转换API更严格,不会出现意想不到的乱码和连篇问号等情况。
更有保障的支持:
Windows能否成功完成指定字符集编码转换,很大程度上取决于用户是否安装了相关的代码页文件。
在任何部署了libiconv库的计算机中,该库支持的字符集编码都能够被正确地转换。
跨平台支持:
libiconv可以用于几乎所有已知的平台。
典型应用
在命令行中单独使用,或作为管道过滤器使用。
例如:
“wfr*.txt
*.htm-r:
"张(\a+/>)"-t:
"李1"”将文档中所有姓张的兄弟姐妹改
为姓李:
)
在批处理中应用。
与其它工具配合使用。
以上每种应用都可以分为三种情况讨论:
单纯的搜索替换。
单纯的字符集编码匹配和转换。
以上两种情况的混合应用。
简单中文帮助
C:
\DocumentsandSettings\Administrator>
#wfr
≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
≡≡≡≡≡
简单中文帮助
C:
\DocumentsandSettings\Administrator>
#wfr
=====================================================================
==========
widefindandreplaceVer2.3.9-1119byBaiYang/2004-2013,
免费
软件
主页地址-
=====================================================================
==========
在文件或管道中批量搜索-替换字符串——支持多字符集编码
用法:
wfr[文件通配符
1文件通配符
2...]
{查找选项:
查找内容}{替换选项:
替换为}
[
其它选项]
=====================================================================
==========
查找选项:
-f:
-
匹配精确串
-fic:
-
匹配精确串(忽略大小写)
-r:
-
正则表达式匹配
-ric:
-
正则表达式匹配(忽略大小写)
-rnnl:
-
跨行正则匹配
-rnnlic:
-
跨行正则匹配(忽略大小写)
-any
-
匹配文件或管道中的所有内容,主要用于完成单纯的批量字符集
编码转换
=====================================================================
==========
替换选项:
-t:
-将匹配的内容替换为指定字符串
-tu:
-先将指定的“替换为”字符串变为大写,然后开始替换
-tl:
-先将指定的“替换为”字符串变为小写,然后开始替换
注意:
如果您正在使用正则匹配,那么您可以在“替换为”字符串中使用子表达式代换
(\0~\9)
===============================================================================
字符编码选项
:
-encin:
-
-encout:
-
-encarg:
-
-unisign-
指定输入文本(文件或管道)的字符集编码。
默认值:
使用当前操作系统的默认代码页。
指定输出(结果)文本的字符集编码。
默认值:
与"-encin"指定的值相同。
指定搜索和替换选项的内容使用何种字符集编码。
默认值:
使用当前操作系统的默认代码页。
如果输出指定为UNICODE宽字符编码(如:
UCS-2,UTF-8/16
等),
则在文
件头部加入
BOM签名,这样支持
unicode
的文本编辑器将会自
动识别该文
-listenc-
-listcmp-
-force-
件的编码格式。
列出所有wfr支持的字符集编码。
列出wfr认可的键入字符集编码转换规则表。
强制实施转换,忽略编码兼容性规则。
===============================================================================
其它选项
:
-h-?
-s
-exp
-
-
-
当前屏幕
包含子目录
启用内存扩展算法,将会加倍
wfr
的内存使用量,但是很多时候
可以极大地
提高执行效率。
现已默认开启。
-noexp-禁用内存扩展算法,参考:
-exp选项的说明。
-stdin-从标准输入设备获得要查找的内容,并将结果从到标准输出设备
(如果未指
定任何文件模板的话,则自动启用该选项)
-stdout-像平时一样,从文件中获得输入,但将结果送到标准输出(而不是写回文
件)
-frc-显示每个文件内发生的替换次数
-trc-显示所有文件总共发生的替换次数
-errstop-当遇到文件或子目录访问错误时,终止搜索任务。
默认:
遇到无法访问的子目录访跳过;遇到无法访问的文件时,
打印错误
信息并继续
=====================================================================
==========
POSIX和Perl风格的正则表达式:
-"find-replace"完整支持POSIX.2扩展标准及Perl风格的正则表达
式。
以下是支持的字符类及其对应关系
:
POSIX
perl
描述
--------------------------------------------------------------------
[:
alnum:
]
字母和数字
[:
alpha:
]
\a
字母
[:
lower:
]
\l
小写字母
[:
upper:
]
\u
大写字母
[:
blank:
]
空格和制表符
[:
space:
]
\s
空白字符
[:
cntrl:
]
控制字符
[:
digit:
]
\d
十进制数字
[:
xdigit:
]
\x
十六进制数字
[:
graph:
]
可打印字符(不包括空白符)
[:
print:
]
\p
可打印字符(包括空白符)
[:
punct:
]
标点符号
-以下是一些perl的特殊字符类:
perl
POSIX等效
描述
--------------------------------------------------------------------
\o
[0-7]
八进制数字
\O
[^0-7]
非八进制数字
\w
[[:
alnum:
]_]
单词组成
\W
[^[:
alnum:
]_]
非单词组成
\A
[^[:
alpha:
]]
非字母
\L
[^[:
lower:
]]
非小写字母
\U
[^[:
upper:
]]
非大写字母
\S
[^[:
space:
]]
非空白符
\D
[^[:
digit:
]]
非十进制数字
\X
[^[:
xdigit:
]]
非十六进制数字
\P
[^[:
print:
]]
非可打印字符
\<
\>
[^[:
alpha:
]_]
[^[:
alnum:
]_]
单词开始
单词结束
-注意:
posix字符类是必须工作在集合中的(“[”和“]”内)。
相反,perl
风格
的字符类是工作在集合运算之外的。
-此外,为了便于在命令行输入一些特殊字符,特别定义了一下别名:
perl
风格
POSIX风格
描述
---------------------------------------------------------------------
--
\"
[:
dq:
]
双引号
\'
[:
sq:
]
单引号
\t
[:
tb:
]
制表符
\n
[:
nl:
]
换行符(0x0A)
\r
[:
rt:
]
回车符(0x0D)
\b
[:
bs:
]
退格符
===============================================================================
TCL8.2
兼容的高级正则表达式(
ARE)
-
为
-r:
-ric:
-rnnl:
-rnnlic:
等命令添加
'***:
'
前缀即可开启高
级正则表达
式功能。
ARE提供了比POSIXERE/BRE更为强大的正则匹配语法,并且使用一套自定
义的字符类。
有关ARE的详细信息,请访问:
=====================================================================
==========
程序返回码:
-1
-
执行替换时发生错误
0
-
替换成功完成
1
-
没有可替换的内容(未找到匹配的模板)
=====================================================================
==========
开关的前缀和后缀:
*
所有命令行开关(选项)都是大小写无关的(如:
"-fic:
"
和"-FIC:
"
)
*
开关的前缀可以是"-"
或"/"(如:
"/s"
和"-s"
)
*
开关的后缀可以是":
"
或"="(如:
"/f:
",
"/f=",
"-f:
"
和"-f="
等效)
===============================================================================
应用示例:
wfr*.txt*.htm-f:
teh-t:
the
wfr*.txt-fic:
"MyDir"-tu:
"%ROOTDIR%"
wfr*.cpp*.h-r:
"***:
(#define.*?
)MY_DEF"/t:
"HER_DEF"
typeserver.log|wfr/r:
"Connected.*218.79"/t:
"**Attack**\0"
typeserver.log|wfr/r:
"^(Smith|James).*\n"/t
unzip-l*.zip|wfr/r:
"^(.{22}:
\d\d\s*|(A|\a|-|.*files$).*\n)"
wfr*.txt/s/any/encin:
gbk/encout:
utf-8
wfr*.log/any/encin:
ucs-2/encout:
gbk/stdout|OtherApp.exe...
wfr*.txt*.htm-r:
"张(\a+/>)"-t:
"李\1"
wfr*.txt*.htm-r:
"[你我他她它]们"-t:
"朋友们"
/t
帮助屏幕
C:
\DocumentsandSettings\Administrator>
#wfr
===============================================================================
widefindandreplaceVer2.3.9-1119byBaiYang/2004-2013,Freewarehomepage-
===============================================================================
Findstringinfilesorpipe,andreplaceittoanotherstringWithMulti-charsetencodingsupport.
USAGE:
wfr[filePattern1filePattern2...]{FindOption:
StringToFind}{ReplaceOption:
StringToReplacement}[OtherOptions]
===============================================================================
FINDOPTIONs:
-f:
-find
-fic:
-findignorecase
-r:
-regularexpresionfind
-ric:
-regularexpresionfindignorecase
-rnnl:
-regularexpresionfindignorenewline
-rnnlic:
-regularexpresionfindignorenewlineignorecase
-any-matchanythinginfile,usuallyusetoperformingtextencoding
convertion
===============================================================================
REPLACEOPTIONs:
-t:
-changethematchto"StringToReplacement"
-tu:
-makethe"StringToReplacement"uppercase,andchangethematch
toit.
-tl:
-makethe"StringToReplacement"lowercase,andchangethematch
toit.
NOTE:
Iffindoptionyouspecifiedisaregularexpresionmethod,thereplace
optionwillsupportsubexpressions(\0-\9)aswell.
=====================================================================
==========
CHARSETENCODINGOPTIONs:
-encin:
-specifycharsetencodingfortheinputtext(fileorpipe).
DEFAULT:
usecurrentsystem'sdefaultcodepage.
-encout:
-specifycharsetencodingfortheoutputtext.
DEFAULT:
sameas"-encin".
-encarg:
-specifycharsetencodingofthefindandreplaceoptions.
DEFAULT:
curre
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Wfr 命令 详解 资料