. : : ClassiClub ForuM : : .

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

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



发表新主题 关闭主题
 
主题工具
link
 
link 的头像
高级会员
 
资 料:
注册日期: Jun 2000
帖子: 727 声望值: 3
精华: 0,解答: 3
#61 旧 2008-09-09, 23:41:12 默认
link 当前离线  

引用:
作者: ASBai 查看帖子
就是 ^$ 匹配行首和行尾,但通配符能够跨行匹配?用 ARE 的 'w' 模式就对了。具体参见 ARE 的文档。
不会怎么启用呀!通过为 stRegEx 参数增加前缀 "***:",能不能举例?
清空[s]
^[ \t]*(\[s\])([^[]*)->\1\r\n
这样写对不对?怎样打开w模式?还是要在命令行激活?

我测试了一下,只用上述的pattern,-rnnlic结果如下:
如果第一段就是[s],则第一段及其后连续的[s]段都清空,其他间隔的[s]段没处理。
如果第一段不是[s],则所有[s]段都没处理。


再次感谢,自动识别ASCII与UNICODE请考虑一下吧,只需要ASCII与各种UNICODE的自动判断,因为实在不知道怎么断定UNICODE的子类,要逐次修改代码观察结果,总想偷懒呀!

此帖于 2008-09-10 00:57:45 被 link 编辑. .
ASBai
 
ASBai 的头像
热心会员
 
资 料:
注册日期: May 2005
帖子: 5,120 声望值: 5
精华: 18,解答: 28
#62 旧 2008-09-10, 12:47:15 默认
ASBai 当前离线  

引用:
作者: link 查看帖子
不会怎么启用呀!通过为 stRegEx 参数增加前缀 "***:",能不能举例?
清空[s]
^[ \t]*(\[s\])([^[]*)->\1\r\n
这样写对不对?怎样打开w模式?还是要在命令行激活?

我测试了一下,只用上述的pattern,-rnnlic结果如下:
如果第一段就是[s]......
俺没写清楚,打开 w 模式应该这样写:
代码:
"***:(?w)^[ \t]*(\[s\])([^[]*)->\1\r\n"
命令行用 -r 或 -ric 即可。

UNICODE 自动识别我再考虑考虑


baiy.cn
俺的原创免费作品站
link
 
link 的头像
高级会员
 
资 料:
注册日期: Jun 2000
帖子: 727 声望值: 3
精华: 0,解答: 3
#63 旧 2008-09-11, 00:08:11 默认
link 当前离线  

引用:
作者: ASBai 查看帖子
俺没写清楚,打开 w 模式应该这样写:
代码:
"***:(?w)^[ \t]*(\[s\])([^[]*)->\1\r\n"
命令行用 -r 或 -ric 即可。

UNICODE 自动识别我再考虑考虑 ......
w模式顺利应用了!真是兴奋!批处理效率提高了差不多200倍,万分感谢你的帮助!
(比你测试中由1小时降低到1.5秒,倒是小巫见大巫了)
有了w模式,是不是等于-rnnlic应用面很窄?
接下来需要研究f.exe了,希望可以将整堆批处理再优化一次,就投入实际应用

f不能搜索UNICODE文本,bwfr顺利搜索成功,但强制删除了
我的应用需求是这样的:
搜索一个UNICODE文本是否存在某行,存在则无需处理,否则在特定位置插入这一行。
请建议我用哪个工具才能搜索UNICODE文本?或者bwfr有没有模式参数可以实现?

此帖于 2008-09-11 11:45:19 被 link 编辑. .
ASBai
 
ASBai 的头像
热心会员
 
资 料:
注册日期: May 2005
帖子: 5,120 声望值: 5
精华: 18,解答: 28
#64 旧 2008-09-11, 14:20:39 默认
ASBai 当前离线  

引用:
作者: link 查看帖子
有了w模式,是不是等于-rnnlic应用面很窄?
呃。。。。我觉得也不能这么说吧,-rnnl 选项是锚点和通配符都对行不敏感。w 模式只不过是控制的细腻了一些,可以让锚点敏感而通配符不敏感,刚好满足了老兄的要求而已,呵呵。

引用:
作者: link 查看帖子
f不能搜索UNICODE文本,bwfr顺利搜索成功
f 之所以不支持多编码搜索是因为不同于 fr 系的工具,f 需要给出行和列以及字节偏移等搜索结果的具体位置信息。

而要支持多字符集编码的搜索,必须先将文件内容转换为 utf-16 进行匹配,然后再把匹配结果的位置信息映射回原始文件内,这个有点困难 :blush;。不过如果想直接搜索 utf-16 编码的文件应该还是比较简单的,只不过没什么人有这个需求所以俺也没搞。

引用:
作者: link 查看帖子
搜索一个UNICODE文本是否存在某行,存在则无需处理,否则在特定位置插入这一行。
请建议我用哪个工具才能搜索UNICODE文本?或者bwfr有没有模式参数可以实现?
这个需求涉及到正则以外的逻辑分支控制了,个人觉得还是写个 vim 的脚本比较方便,或者用 perl、python 之类的脚本语言比较容易搞定。
link
 
link 的头像
高级会员
 
资 料:
注册日期: Jun 2000
帖子: 727 声望值: 3
精华: 0,解答: 3
#65 旧 2008-09-11, 15:29:24 默认
link 当前离线  

引用:
作者: ASBai 查看帖子
f 之所以不支持多编码搜索是因为不同于 fr 系的工具,f 需要给出行和列以及字节偏移等搜索结果的具体位置信息。

而要支持多字符集编码的搜索,必须先将文件内容转换为 utf-16 进行匹配,然后再把匹配结果的位置信息映射回原始文件内,这个有点困难 。不过如果想直接搜索 utf-16 编码的文件应该还是比较简单的,只不过没什么人有这个需求所以俺也没搞。
我这样理解对不对?
如果要搜索的字符串是UTF-16,则可以对UNICODE文件正确搜索,则“搜索一个UNICODE文本是否存在某行”自动解决。我再看看f的参数怎么支持UTF-16字符串。

引用:
作者: ASBai 查看帖子
这个需求涉及到正则以外的逻辑分支控制了,个人觉得还是写个 vim 的脚本比较方便,或者用 perl、python 之类的脚本语言比较容易搞定。
这点我倒没想这么复杂,我的出发点是将fr系列的-t系列参数作为可选参数,当没有-t参数的时候,只是输出匹配的内容。当然,细致考虑包括-f对应输出包含匹配字符串的行,而-r控制性很强,翻译输出即可,可以只支持-stdout或同时支持非源文件。请斟酌一下?
或者把这个叫类似PowerGREP的Collect Data的fc系列?

此帖于 2008-09-11 15:32:41 被 link 编辑. .
ASBai
 
ASBai 的头像
热心会员
 
资 料:
注册日期: May 2005
帖子: 5,120 声望值: 5
精华: 18,解答: 28
#66 旧 2008-09-11, 16:06:47 默认
ASBai 当前离线  

引用:
作者: link 查看帖子
我再看看f的参数怎么支持UTF-16字符串。
别研究了,不是说了 f 现在还没支持呢吗 :blush;

引用:
作者: link 查看帖子
当然,细致考虑包括-f对应输出包含匹配字符串的行,而-r控制性很强,翻译输出即可,可以只支持-stdout或同时支持非源文件。请斟酌一下?
这句没怎么看明白,现在就可以只支持 -stdout 啊~
link
 
link 的头像
高级会员
 
资 料:
注册日期: Jun 2000
帖子: 727 声望值: 3
精华: 0,解答: 3
#67 旧 2008-09-11, 17:17:41 默认
link 当前离线  

引用:
作者: ASBai 查看帖子

这句没怎么看明白,现在就可以只支持 -stdout 啊~
使用wfr,找到了测试文本,本应不作任何处理就可以了,但-t是强制执行的,也就是说必须替换文本,而且输出是全文,包括不匹配和替换后的内容。

假设有一个wfc函数,-ric找到了测试文本,-t将匹配的内容按规则替换,然后输出到-stdout。注意,只是匹配的行或者块被替换后的部分,不是整个文件。

-stdout,微软SORT程序帮助有一句话,说SORT输出到stdout,再重定向到文件,比直接指定输出文件慢,我不知道这里是否类似,如果类似,增加直接指定输出文件的参数是否更完美些?现在如果不选择-stdout,则只能修改原文件,不能建立新文件,是否可以考虑-out:newfile.txt之类呢?

-t,配合前述只是输出部分文本的想法,变成可选参数,忽略时输出根据-f/-r调整,-f输出源字符串意义较小,可以考虑输出包含源字符串的行;-r将按照规则转换,输出转换后的结果。
ASBai
 
ASBai 的头像
热心会员
 
资 料:
注册日期: May 2005
帖子: 5,120 声望值: 5
精华: 18,解答: 28
#68 旧 2008-09-11, 20:22:32 默认
ASBai 当前离线  

引用:
作者: link 查看帖子
使用wfr,找到了测试文本,本应不作任何处理就可以了,但-t是强制执行的,也就是说必须替换文本,而且输出是全文,包括不匹配和替换后的内容。

假设有一个wfc函数,-ric找到了测试文本,-t将匹配的内容按规则替换,然后输出到-stdout。注意,只是匹配的行或者块被替换后的部分,不是整个文件。

-stdout,微软......
总结一下:
1. 希望提供一个选项,让 fr 系工具的 -stdout 选项只输出匹配部分。
2. 希望提供一个选项,让 fr 系工具不覆盖原文件,而是把结果写入一个新文件里。
3. 希望 fr 系工具在只输出匹配部分的时候对 -f 的输出格式特别处理。

不知道理解对了没有
这个。。。(一边擦汗)我好好考虑考虑。。。。。
link
 
link 的头像
高级会员
 
资 料:
注册日期: Jun 2000
帖子: 727 声望值: 3
精华: 0,解答: 3
#69 旧 2008-09-11, 23:18:18 默认
link 当前离线  

引用:
作者: ASBai 查看帖子
总结一下:
1. 希望提供一个选项,让 fr 系工具的 -stdout 选项只输出匹配部分。
2. 希望提供一个选项,让 fr 系工具不覆盖原文件,而是把结果写入一个新文件里。
3. 希望 fr 系工具在只输出匹配部分的时候对 -f 的输出格式特别处理。

不知道理解对了没有
这个。。。(一边擦汗)我好好......
对,主要是1.,刚想到例如-rictring -t:found -catch -stdout,就可以比较输出是否“found”来判断搜索结果

2.、3.是锦上添花,3.就是CMD命令findstr的工作方式,可以先别管……(实际上实现1就有了3,2是已经可以用重定向实现)
ASBai
 
ASBai 的头像
热心会员
 
资 料:
注册日期: May 2005
帖子: 5,120 声望值: 5
精华: 18,解答: 28
#70 旧 2008-09-13, 15:12:07 默认
ASBai 当前离线  

引用:
作者: link 查看帖子
对,主要是1.,刚想到例如-rictring -t:found -catch -stdout,就可以比较输出是否“found”来判断搜索结果

2.、3.是锦上添花,3.就是CMD命令findstr的工作方式,可以先别管……(实际上实现1就有了3,2是已经可以用重定向实现)
明白了,可以这么理解吧?其实link兄有第一个要求也是因为 f 不能匹配 UNICODE 文件造成的,可能还是直接改进 f 更好点?让 f 支持 UNICODE 文件应该不算复杂,我考虑考虑。

另祝中秋快乐
link
 
link 的头像
高级会员
 
资 料:
注册日期: Jun 2000
帖子: 727 声望值: 3
精华: 0,解答: 3
#71 旧 2008-09-13, 22:06:20 默认
link 当前离线  

引用:
作者: ASBai 查看帖子
明白了,可以这么理解吧?其实link兄有第一个要求也是因为 f 不能匹配 UNICODE 文件造成的,可能还是直接改进 f 更好点?让 f 支持 UNICODE 文件应该不算复杂,我考虑考虑。

另祝中秋快乐
祝人月两团圆

f在Windows的CMD命令行ASCII编码模式下已经太强大了,我就不懂怎么利用找出的行号,因为没有内部命令可以利用行号进行方便的处理,只能用FOR,意义不大。

因此f在UNICODE编码中没有行号功能对我来说是可接受的,渴望有新版本……
fr系列支持自动处理UNICODE对我也很重要,有可能的话也渴望有新版本……
但和家人过节最重要喔,节后再考虑吧
ASBai
 
ASBai 的头像
热心会员
 
资 料:
注册日期: May 2005
帖子: 5,120 声望值: 5
精华: 18,解答: 28
#72 旧 2008-09-16, 21:26:37 默认
ASBai 当前离线  

引用:
作者: link 查看帖子
祝人月两团圆

f在Windows的CMD命令行ASCII编码模式下已经太强大了,我就不懂怎么利用找出的行号,因为没有内部命令可以利用行号进行方便的处理,只能用FOR,意义不大。

因此f在UNICODE编码中没有行号功能对我来说是可接受的,渴望有新版本……
fr系列支持自动处理UNICODE对我也很重要,有可能的......
抽空给 f 加上了支持 unicode(utf-16)格式文件搜索的功能,下载地址已 PM 你。等老兄测试通过了我再正式发布。
link
 
link 的头像
高级会员
 
资 料:
注册日期: Jun 2000
帖子: 727 声望值: 3
精华: 0,解答: 3
#73 旧 2008-09-17, 00:57:18 默认
link 当前离线  

引用:
作者: ASBai 查看帖子
抽空给 f 加上了支持 unicode(utf-16)格式文件搜索的功能,下载地址已 PM 你。等老兄测试通过了我再正式发布。
初步测试,结果是好用
对于-fic,不知道怎么写-fic:"Server,\\svrapp1,"Group1",0x01"的正确表达,改用-ric通过了测试。
明天再测试一下跨行搜索字符块,看看f是怎么表达结果的。
最后,-of不但覆盖-o,还覆盖了-tmc,我不知道这是否你的设计原意。现在最喜欢-of,输出文件名,应该比较容易写结果判别的,明天搞吧,太困了……
ASBai
 
ASBai 的头像
热心会员
 
资 料:
注册日期: May 2005
帖子: 5,120 声望值: 5
精华: 18,解答: 28
#74 旧 2008-09-17, 01:04:22 默认
ASBai 当前离线  

引用:
作者: link 查看帖子
初步测试,结果是好用
对于-fic,不知道怎么写-fic:"Server,\\svrapp1,"Group1",0x01"的正确表达,改用-ric通过了测试。
fic 应该这样写:-fic:"Server,\\svrapp1,\"Group1\",0x01" windows 命令行解释器要求参数中有引号的话必须换码。

引用:
作者: link 查看帖子
最后,-of不但覆盖-o,还覆盖了-tmc,我不知道这是否你的设计原意。现在最喜欢-of,输出文件名,应该比较容易写结果判别的
it's by design 也可以通过 f 的退出码判断匹配结果。返回 0 表示存在匹配;返回 1 表示没有匹配;返回 -1 表示发生错误。
link
 
link 的头像
高级会员
 
资 料:
注册日期: Jun 2000
帖子: 727 声望值: 3
精华: 0,解答: 3
#75 旧 2008-09-17, 09:19:40 Icon14
link 当前离线  

引用:
作者: ASBai 查看帖子
fic 应该这样写:-fic:"Server,\\svrapp1,\"Group1\",0x01" windows 命令行解释器要求参数中有引号的话必须换码......
学习了!我对"加了\转义,但多手对其他地方的\也加了\转义,就没得到正确结果:blush;;现在修正了,就得到正确结果。

返回值一定要写到readme.txt里面呀!对批处理应用极为重要。

-fic -ric加-unicode参数成功运作,非常好!

对字符块测试的结果,很好很强大!!!简直跟bwfr没什么区别,我喜欢现在的多种输出方式,但想找输出找到的字符块时,没找到合适的参数,就是说,不能输出多行。如果在-ric:"***: (?w)^text block"参数下能够输出多行,就觉得是最好最强大了
锦上添花的想法——
在正则模式下增加输出参数-match,输出匹配的正则结果,包括行和多行,默认还是保留输出匹配的整行(f:l:c非常好),输出多行时,建议类似
filename:linenumber1>
Matched line1
Matched line2
Matched line3
filename:linenumber2>
Matched line1
Matched line2
Matched line3

另外,本想建议增加类似findstr的-v参数的,但又想到可以通过fr系列实现,就认为没有必要了。越用越觉得你这套工具劲呀!:045:

又:在bwfr的-ric的***: (?w)模式中,搜索含有\的字符串需要用\\\才能完成转义,替换成的串也需要用\\\转义,这符合设计意图吗?如果是的话,能否讲解讲解?
在bwfr的-ric的普通模式中,我要在目标文件增加字符串“\r\n”,则转换对要写成a->b\\\\r\\\\n,一早试出来的,当时忘了问,现在碰到上面\\\的情况就又想起来了,一并请教……
我再测试了-ric的普通模式,现在也变成搜索\要用\\\,而不是\\,没准是bug?因为在f里面,只需要\\即可。

又有:wfr的encin:utf-16默认输出没调整好,需要显式写-encout:utf-16

此帖于 2008-09-17 17:20:43 被 link 编辑. .
发表新主题 关闭主题

主题工具

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


所有时间均为北京时间, 现在的时间是 11:59:51.

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

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