. : : ClassiClub ForuM : : .

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

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



发表新主题 关闭主题
 
主题工具
link
 
link 的头像
高级会员
 
资 料:
注册日期: Jun 2000
帖子: 723 声望值: 3
精华: 0,解答: 3
#31 旧 2008-08-30, 13:37:40 默认
link 当前离线  

请教楼主,怎样删除包含特定数据的一行?
文件模板如下,实际文本是没有行号的——
1:a.1, b.2 = c.3, d.4, e.5
2:a.1, k.2 = c.3, d.4, e.5
3:a.1, k.2
4:
5:k.2 = c.3, d.4, e.5
6:b.2 = c.3, d.4, k.2
7:
8:b.2 = c.3, k.2, e.5
9:k.2

想用bwfr删除包含k2的第2,3,5,9行,第6,8行保留,实际文本有多个不同的k2,所以想用模板文件批量删除,但配对行总写不对,删除不了非k2开头的行,也就是第2,3行。
请教一下我怎么写参数,谢谢!

此帖于 2008-08-31 00:40:44 被 link 编辑. .
ASBai
 
ASBai 的头像
热心会员
 
资 料:
注册日期: May 2005
帖子: 4,720 声望值: 5
精华: 18,解答: 26
#32 旧 2008-09-01, 03:19:40 默认
ASBai 当前离线  

引用:
作者: link 查看帖子
请教楼主,怎样删除包含特定数据的一行?
文件模板如下,实际文本是没有行号的——
1:a.1, b.2 = c.3, d.4, e.5
2:a.1, k.2 = c.3, d.4, e.5
3:a.1, k.2
4:
5:k.2 = c.3, d.4, e.5
6:b.2 = c.3, d.4, k.2
7:......
用正则:.*k.2.*=.* 不行吗?


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

引用:
作者: ASBai 查看帖子
用正则:.*k.2.*=.* 不行吗?
我写的正则是.*k.2.*,结果从第一个k.2所在行开始到文件尾都被删除了。

命令行是bwfr test.log -ric -argfile:keys.txt -exp

keys.txt是.*k.2.*

运行环境是Vista x86, iconv.dll和bwfr在同一个Tools文件夹,但不是工作文件夹,非管理员权限命令行窗口。
另外iconv.dll没有特别运行注册。

谢谢解答!
flyba
 
flyba 的头像
超级会员
 
资 料:
注册日期: Mar 2006
帖子: 1,765 声望值: 3
精华: 0,解答: 1
#34 旧 2008-09-01, 23:07:18 默认
flyba 当前离线  

真不错,这东西收藏起来研究一下,
可以提供自己的代码水平。
lxhit
 
lxhit 的头像
高级会员
 
资 料:
注册日期: Dec 2001
帖子: 826 声望值: 3
精华: 0,解答: 1
#35 旧 2008-09-02, 00:01:09 默认
lxhit 当前离线  

不错,谢谢
ASBai
 
ASBai 的头像
热心会员
 
资 料:
注册日期: May 2005
帖子: 4,720 声望值: 5
精华: 18,解答: 26
#36 旧 2008-09-02, 00:33:37 默认
ASBai 当前离线  

引用:
作者: link 查看帖子
我写的正则是.*k.2.*,结果从第一个k.2所在行开始到文件尾都被删除了。

命令行是bwfr test.log -ric -argfile:keys.txt -exp

keys.txt是.*k.2.*

运行环境是Vista x86, iconv.dll和bwfr在同一个Tools文件夹,但不是工作文件夹,非管理......
1. 你写的正则好像好了个等号
2. 能传个样本文件上来吗?

此帖于 2008-09-02 02:10:55 被 ASBai 编辑. .
保时捷
 
保时捷 的头像
超级会员
 
资 料:
注册日期: Oct 2002
帖子: 1,718 声望值: 2
精华: 0
#37 旧 2008-09-02, 03:51:55 默认
保时捷 当前离线  

这个强,谢谢推荐。


Campagnolo
link
 
link 的头像
高级会员
 
资 料:
注册日期: Jun 2000
帖子: 723 声望值: 3
精华: 0,解答: 3
#38 旧 2008-09-02, 10:55:47 默认
link 当前离线  

引用:
作者: ASBai 查看帖子
1. 你写的正则好像好了个等号
2. 能传个样本文件上来吗?
我是还没轮到解决等号的问题就碰到删除过多……
现在论坛不允许上传附件吧?我想想怎么给你,先谢谢了!

初步找到原因了:
在我的系统中,使用-ric好像是跨行匹配的效果,改用-rnnlic就基本正常,在-rnnlic参数条件下,必须显式提供\r\n,否则会保留删除后的空行,我不知道这种情况是否你设计预期的……

我的替换模板.*K.2.*\r\n,还没处理=号

谢谢你的帮助!

此帖于 2008-09-04 09:02:55 被 link 编辑. .
by1455
 
by1455 的头像
超级会员
 
资 料:
注册日期: Sep 2001
帖子: 1,209 声望值: 3
精华: 0,解答: 1
#39 旧 2008-09-03, 20:08:29 默认
by1455 当前离线  

不错不错。
link
 
link 的头像
高级会员
 
资 料:
注册日期: Jun 2000
帖子: 723 声望值: 3
精华: 0,解答: 3
#40 旧 2008-09-05, 10:42:32 默认
link 当前离线  


新问题,bwfr实际执行中不能处理utf-16编码的文件,楼主可帮忙确认这程序在Vista环境能正确运行?谢谢!
ASBai
 
ASBai 的头像
热心会员
 
资 料:
注册日期: May 2005
帖子: 4,720 声望值: 5
精华: 18,解答: 26
#41 旧 2008-09-06, 02:33:42 默认
ASBai 当前离线  

引用:
作者: link 查看帖子
我是还没轮到解决等号的问题就碰到删除过多……
现在论坛不允许上传附件吧?我想想怎么给你,先谢谢了!

初步找到原因了:
在我的系统中,使用-ric好像是跨行匹配的效果,改用-rnnlic就基本正常,在-rnnlic参数条件下,必须显式提供\r\n,否则会保留删除后的空行,我不知道这种情况是否你设计预期的……

我的替换......
ric 应该是不会跨行匹配的,rnnlic 反而是跨行匹配,所有要加 \r\n 做限制。具体问题可能跟你的文件格式有关。

引用:
作者: link 查看帖子
新问题,bwfr实际执行中不能处理utf-16编码的文件,楼主可帮忙确认这程序在Vista环境能正确运行?谢谢!
utf-16/ucs2 都是可以正确处理的。需要加参数指定字符集编码,具体请看帮助。Vista 下可以正常运行。
link
 
link 的头像
高级会员
 
资 料:
注册日期: Jun 2000
帖子: 723 声望值: 3
精华: 0,解答: 3
#42 旧 2008-09-06, 09:51:42 默认
link 当前离线  

引用:
作者: ASBai 查看帖子
ric 应该是不会跨行匹配的,rnnlic 反而是跨行匹配,所有要加 \r\n 做限制。具体问题可能跟你的文件格式有关。


utf-16/ucs2 都是可以正确处理的。需要加参数指定字符集编码,具体请看帮助。Vista 下可以正常运行。
关于ric我想不清楚怎么会跟文件格式有关,因为是标准txt文本,暂放一边稍后反馈

参数我是加了的,utf-16我执行regsvr32 注册再注销iconv.dll好像就激活了,但是输出时没有自动按utf-16输出,必须显式给出参数-encout,和使用帮助的说法有点不同?

总的来说现在突然变得可用了,不知道怎么搞出来的,效果很好。
建议一下,如果bwfr尝试自动判断输入文件的格式,并同格式输入就更好了,不需要考虑同一文件内多种编码混杂的情况。原因是我不懂怎么判断源文件编码,只好一个一个参数试,挺郁闷的。
bwfr工具很好,终于可以用上了,批处理简单了好多,效率也上去了,非常感谢!
ASBai
 
ASBai 的头像
热心会员
 
资 料:
注册日期: May 2005
帖子: 4,720 声望值: 5
精华: 18,解答: 26
#43 旧 2008-09-06, 16:50:59 默认
ASBai 当前离线  

引用:
作者: link 查看帖子
关于ric我想不清楚怎么会跟文件格式有关,因为是标准txt文本,暂放一边稍后反馈
txt 根据换行符不同分为 dos、unix、mac 等格式。

引用:
作者: link 查看帖子
参数我是加了的,utf-16我执行regsvr32 注册再注销iconv.dll好像就激活了,
regsvr32 不是COM组件,不需要注册,呵呵。而且 bwfr 不用 iconv.dll 一样可以工作(可以使用 windows 的代码页转换API)。

引用:
作者: link 查看帖子
参数我是加了的,.....,必须显式给出参数-encout,和使用帮助的说法有点不同?
这个问题,我去看了一下源码,因为程序的设计缺陷,在 -encin 是 utf-16/ucs-2 时 -encout 参数必须显式指定。等会儿更新一下

引用:
作者: link 查看帖子
总的来说现在突然变得可用了,不知道怎么搞出来的,效果很好。
恭喜

引用:
作者: link 查看帖子
建议一下,如果bwfr尝试自动判断输入文件的格式,并同格式输入就更好了.....
不太可能,bwfr 支持上百种字符集编码,无法自动判断。能做自动判断的都是只支持一类字符集(比如:中文字符集)的编码转换工具。抱歉~
link
 
link 的头像
高级会员
 
资 料:
注册日期: Jun 2000
帖子: 723 声望值: 3
精华: 0,解答: 3
#44 旧 2008-09-06, 23:01:53 默认
link 当前离线  

引用:
作者: ASBai 查看帖子
txt 根据换行符不同分为 dos、unix、mac 等格式。


regsvr32 不是COM组件,不需要注册,呵呵。而且 bwfr 不用 iconv.dll 一样可以工作(可以使用 windows 的代码页转换API)。


这个问题,我去看了一下源码,因为程序的设计缺陷,在 -encin 是 utf-16/u......
源文件是dos格式
-ric不是与-rnnlic相反,而是失效
不需要识别100种格式呀,只要自动识别各种unicode就行了,也就是说dos格式txt源文件,自动判别ASCII,还是某一种unicode,并使用同样的格式输出,其它格式使用者一般心里清楚,而unicode的还要慢慢确认,可以考虑一下吗?谢谢!
ASBai
 
ASBai 的头像
热心会员
 
资 料:
注册日期: May 2005
帖子: 4,720 声望值: 5
精华: 18,解答: 26
#45 旧 2008-09-07, 00:55:02 默认
ASBai 当前离线  

引用:
作者: link 查看帖子
源文件是dos格式
-ric不是与-rnnlic相反,而是失效
汗,自己试了一下,在 bwfr 里 -r, -rnnl 以及 -ric, -rnnlic 参数的意义正好判断反了。。。。。。这个太悲剧了。已经修正,请重新下载,十分抱歉~

引用:
作者: link 查看帖子
不需要识别100种格式呀,只要自动识别各种unicode就行了,也就是说dos格式txt源文件,自动判别ASCII,还是某一种unicode,并使用同样的格式输出,其它格式使用者一般心里清楚,而unicode的还要慢慢确认,可以考虑一下吗?谢谢!
只识别 unicode 倒是不难,但是要做好就比较难了。unicode 虽然可以通过 BOM 签名来识别,但是有些字符集编码和 BOM 签名是有冲突的。比如前一阵很有名的“微软记事本不认联通”就是 BOM 判断的一个失败案例。这还只是 BOM 在 GBK 上面的失败。字符集编码上百种,实在很难验证其中多少和 BOM 签名存在发生冲突的可能。
发表新主题 关闭主题

主题工具

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


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

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

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