. : : ClassiClub ForuM : : .

会员中心 论坛帮助 日历事件 标记论坛已读
返回   精品技术论坛 » 技术论坛 » 『软件使用』

『软件使用』: 电脑软件推荐, 电脑软件使用, 经验分享



发表新主题 关闭主题
 
主题工具
ASBai
 
ASBai 的头像
热心会员
 
资 料:
注册日期: May 2005
帖子: 4,720 声望值: 5
精华: 18,解答: 26
#1 旧 2008-07-13, 23:20:09 默认 【原创】命令行工具系列-8 批量文本替换工具,支持各种编码 (09-09)
ASBai 当前离线  

■ 2008-09-09 更新:
UPD: 增强了正则行首锚点 '^' 的适应性。

■ 2008-09-08 更新:
FIX: 纠正了正则表达式零长匹配时会出现无限循环的问题(例如,在内容“aaa.bbb”中将“[^.]*”替换为“z”)。
FIX: 纠正了正则行首锚点解析不正确的问题(例如,在内容“ccc”将“^c”替换为“z”)。

■ 2008-09-07 更新:
1. 修正了 -r, -rnnl 参数以及 -ric, -rnnlic 参数含义相互对调的问题。

■ 2008-09-06 更新:
1. 修正了 -encin 为 utf-8 或 ucs-2 时,-encout 不能自动判定的问题。
2. 正式支持高级正则表达式(ARE)模式,详情参见:这里

倒,论坛附件还是不能用啊,大家去这里下载更新吧:http://baiy.cn/utils/bwfr/index.htm

用法类似 wfr(http://bbs.et8.net/bbs/showthread.php?t=775619),
但可以从一个参数文件中同时指定多个查找/替换规则。例如:

1->a
2->b
3->c
4->d

等等。

支持环境变量扩展,例如:
dir->%SystemRoot%
 
简单说明
代码:
功能简介
  ■ 纯 unicode 规则匹配内核,真正支持各国语言文字的正则匹配。
  ■ 带有兼容性检查的字符集编码转换功能。同时支持 GUN libiconv(iconv.dll) 和 Windows 自带的字符集编码转换 API。
  ■ 支持一次性指定多个查找/替换对。
  ■ 支持环境变量展开,可以在查找/替换对中使用系统环境变量。
  ■ 支持一次性指定多个文件通配符和文件列表。
  ■ 支持管道模式,与其它命令协同工作;支持半管道模式,从文件中获取输入,但将结果写到标准输出。
  ■ 支持包含子目录。
  ■ 支持普通匹配、正则匹配、可忽略大小写、可跨行匹配。替换时可以使用正则的子表达式。
  ■ 同时支持 posix 标准的扩展正则表达式及 perl 风格的正则匹配。
  ■ 可以格式化替换内容为全大写或全小写,便于在批处理中对环境变量和命令行参数做大小写一致化处理。
  ■ 支持 DOS(Windows)、Macintosh 和 unix 风格的换行符,可选择自动识别(默认)或手动指定。
  ■ 统计功能,列出每个文件中的替换次数、总替换次数等。
  ■ 支持Win32和纯DOS环境(纯DOS环境中需要 HX DOS Extender 支持)。
 
代码:
≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
简单中文帮助

C:\Documents and Settings\Administrator>
#bwfr

===============================================================================
    wide find and replace Ver 2.4.1.713 by BaiYang / 2004 - 2008, 免费软件
                                 批量替换版
                      主页地址 - http://baiy.cn
===============================================================================
在文件或管道中批量搜索-替换字符串——支持多字符集编码

用法: bwfr [文件通配符1 文件通配符2 ...] {查找选项:查找内容} {-argfile:替换规则
           文件} [其它选项]

===============================================================================
查找选项:
  -f:      - 匹配精确串
  -fic:    - 匹配精确串(忽略大小写)
  -r:      - 正则表达式匹配
  -ric:    - 正则表达式匹配(忽略大小写)
  -rnnl:   - 跨行正则匹配
  -rnnlic: - 跨行正则匹配(忽略大小写)

===============================================================================
参数文件选项:
您应当使用参数文件来指定 "查找/替换" 对。参数文件中的每一行代表一个查找替换对,
例如:
  1->a
  2->b
  3->c
  4->d
  ...
  -argfile:- 指定参数文件路径
  -dlm:    - 指定查找/替换对中,'查找' 部分和 '替换' 部分之间的分隔符。
             默认:"->"
  注意: 如果您正在使用正则匹配,那么您可以在“替换”部分中中使用子表达式代换 
        (\0 ~ \9)
  注意:您可以在参数文件中使用系统环境变量,例如:
        Dir->%SystemRoot%
  注意:您可以使用 '\r' 和 '\n' 来表示 '回车符' 和 '换行符',例如:
        1->a\r\n
        要输出 '\r' 和 '\n' 的字面值,可以使用 '\\r' 和 '\\n'。

===============================================================================
字符编码选项:
  -encin:  - 指定输入文本(文件或管道)的字符集编码。
               默认值: 使用当前操作系统的默认代码页。
  -encout: - 指定输出(结果)文本的字符集编码。
               默认值: 与 "-encin" 指定的值相同。
  -encarg: - 指定参数文件的内容使用何种字符集编码。
               默认值: 使用当前操作系统的默认代码页。
  -unisign - 如果输出指定为 UNICODE 宽字符编码 (如: UCS-2, UTF-8/16 等), 则在文
             件头部加入 BOM 签名,这样支持 unicode 的文本编辑器将会自动识别该文
             件的编码格式。
  -listenc - 列出所有 bwfr 支持的字符集编码。
  -listcmp - 列出 bwfr 认可的键入字符集编码转换规则表。
  -force   - 强制实施转换,忽略编码兼容性规则。

===============================================================================
其它选项:
  -s       - 包含子目录
  -exp     - 启用内存扩展算法,将会加倍 fr 的内存使用量,但是很多时候可以极大地
             提高执行效率。如果你碰到了性能问题,可以尝试开启该选项。
  -stdin   - 从标准输入设备获得要查找的内容,并将结果从到标准输出设备(如果未指
             定任何文件模板的话,则自动启用该选项)
  -stdout  - 像平时一样, 从文件中获得输入, 但将结果送到标准输出(而不是写回文
             件)
  -frc     - 显示每个文件内发生的替换次数
  -trc     - 显示所有文件总共发生的替换次数

===============================================================================
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:]          退格符

===============================================================================
开关的前缀和后缀:
  * 所有命令行开关(选项)都是大小写无关的(如: "-fic:" 和 "-FIC:")
  * 开关的前缀可以是 "-" 或 "/"(如: "/s" 和 "-s")
  * 开关的后缀可以是 ":" 或 "="(如: "/f:", "/f=", "-f:" 和 "-f=" 等效)

===============================================================================
应用示例:
  bwfr *.txt *.htm -fic -argfile:patterns.txt
此工具主要针对 frank 兄的 http://bbs.et8.net/bbs/showthread.php?t=937695 问题。

此帖于 2008-09-09 17:54:58 被 ASBai 编辑. .


baiy.cn
俺的原创免费作品站
apie
 
apie 的头像
待认证激活
 
资 料:
注册日期: Dec 2000
帖子: 512 声望值: 2
精华: 0,解答: 1
#2 旧 2008-07-14, 03:17:17 默认
apie 当前离线  

赞,收藏了
robot
 
robot 的头像
热心会员
 
资 料:
注册日期: Jul 2000
帖子: 4,250 声望值: 16
精华: 0,解答: 3
#3 旧 2008-07-14, 05:20:48 默认
robot 当前离线  

谢谢,正想找一个这样的命令行工具。
xcyfq
 
xcyfq 的头像
热心会员
 
资 料:
注册日期: May 2005
帖子: 15,360 声望值: 6
精华: 12,解答: 17
#4 旧 2008-07-14, 07:10:36 默认
xcyfq 当前离线  

看起来处理词库很好,下载了,发现自己的道行不够,不会用。
要是做成操作界面的更好,呵呵,方便了我等道行低的人~~意淫下。


有付出不一定有回报。
jianlu
 
jianlu 的头像
高级会员
 
资 料:
注册日期: Mar 2000
帖子: 632 声望值: 3
精华: 0
#5 旧 2008-07-14, 08:32:06 默认
jianlu 当前离线  

随着图形界面的普及,愈来愈少用命令行了。
marking
 
marking 的头像
支柱会员
 
资 料:
注册日期: Aug 2001
帖子: 7,605 声望值: 4
精华: 2,解答: 5
#6 旧 2008-07-14, 08:49:05 默认
marking 当前离线  

仰慕啊!!!


SarsMark@hotmail.com
Huangwen
 
Huangwen 的头像
高级会员
 
资 料:
注册日期: Sep 2004
帖子: 598 声望值: 3
精华: 0,解答: 16
#7 旧 2008-07-14, 08:49:35 默认
Huangwen 当前离线  

好东西,收藏
ASBai
 
ASBai 的头像
热心会员
 
资 料:
注册日期: May 2005
帖子: 4,720 声望值: 5
精华: 18,解答: 26
#8 旧 2008-07-14, 11:16:47 默认
ASBai 当前离线  

引用:
作者: xcyfq 查看帖子
看起来处理词库很好,下载了,发现自己的道行不够,不会用。
要是做成操作界面的更好,呵呵,方便了我等道行低的人~~意淫下。
俺最不耐烦的事之一,就是画 GUI。即使有 RAD 可用,我还是觉得很不爽。
WanYanJun
 
WanYanJun 的头像
核心会员
 
资 料:
注册日期: Jun 2000
帖子: 2,605 声望值: 3
精华: 1
#9 旧 2008-07-14, 13:48:53 默认
WanYanJun 当前离线  

这下方便多了,之前总是用批处理解决。


办法总比问题多……
Frank_001
 
Frank_001 的头像
热心会员
 
资 料:
注册日期: Feb 2002
帖子: 1,168 声望值: 3
精华: 1
#10 旧 2008-07-15, 12:50:48 Icon14
Frank_001 当前离线  

太感谢ASBai兄啦,马上下载过去用用看,


- 你快乐所以我快乐! -
fatality
 
fatality 的头像
终极会员
 
资 料:
注册日期: Dec 2001
帖子: 12,992 声望值: 3
精华: 1,解答: 21
#11 旧 2008-07-15, 13:49:13 默认
fatality 当前离线  

.link 快捷方式文件,能用这个编辑吗?
venchia
 
venchia 的头像
热心会员
 
资 料:
注册日期: Nov 2005
帖子: 2,357 声望值: 7
精华: 0,解答: 6
#12 旧 2008-07-15, 13:57:17 默认
venchia 当前离线  

TextForever也可以批量替换,可惜不支持正则

而这个虽然支持正则,不过没界面好像也不方便
ASBai
 
ASBai 的头像
热心会员
 
资 料:
注册日期: May 2005
帖子: 4,720 声望值: 5
精华: 18,解答: 26
#13 旧 2008-07-15, 15:54:08 默认
ASBai 当前离线  

引用:
作者: fatality 查看帖子
.link 快捷方式文件,能用这个编辑吗?
.lnk 是二进制格式吧?你要替换里面的啥东西呢?
fatality
 
fatality 的头像
终极会员
 
资 料:
注册日期: Dec 2001
帖子: 12,992 声望值: 3
精华: 1,解答: 21
#14 旧 2008-07-15, 17:07:26 默认
fatality 当前离线  

引用:
作者: ASBai 查看帖子
.lnk 是二进制格式吧?你要替换里面的啥东西呢?
例如:把里面的"D:\", 改为"E:\"
copymix
 
copymix 的头像
高级会员
 
资 料:
注册日期: Mar 2002
帖子: 529 声望值: 3
精华: 0
#15 旧 2008-07-15, 17:23:36 默认
copymix 当前离线  

确实不错,就是人性化差了点
发表新主题 关闭主题

主题工具

论坛规则  发帖规则
不可以发表主题
不可以回复帖子
不可以上传附件
不可以编辑自己的帖子
论坛启用 vB 代码
版面启用 表情符号
版面启用 [IMG] 代码
版面禁用 HTML 代码


所有时间均为北京时间, 现在的时间是 01:16:22.

本论坛带宽由迅通网络提供
SSL证书由TrustAsia提供

Copyright © 2000 - 2019 ClassiClub Forum All Rights Reserved.
粤ICP备09123456号