[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理如何查找/提取txt文本里第一列内容相同的行

本帖最后由 pcl_test 于 2016-11-25 08:26 编辑

有一个文本是TXT由多个TXT文档合并来,有7MB之多,因为里面有很多重复的数据想把重复数据筛选出来,请问这个代码该如何写》?
文本样式:
A.TXT
ADLL51A111110092,2011/11/21,14:51:19
AGCCDPC111110092,2011/11/21,14:51:24
AGCJDPB111110086,2011/11/21,14:51:32
ADC10Z111110096,2011/11/21,14:51:33
ADLL51A111110043,2011/11/21,14:55:10
AGCCDPC111110043,2011/11/21,14:55:11
AGCJDPB111110028,2011/11/21,14:55:12
ADLL51A111110092,2011/11/21,14:55:13
ADLL51A111110017,2011/11/21,14:55:18
其中红色是出现重复的,时间日期忽略不计,筛选结果输出到B.TXT告诉那些是相同代码。谢谢!
输出到B.TXT格式
ADLL51A111110092,2011/11/21,14:51:19
ADLL51A111110092,2011/11/21,14:55:13

这个文件中没有重复行。
s = AdoRs.GetString(2, n, ",", "\r\n");
改成
s = "";
if (n>0) s = AdoRs.G ...
powerbat 发表于 2011-11-26 21:32


改好代码测试完美,非常感谢您的帮助

TOP

这个文件中没有重复行。
s = AdoRs.GetString(2, n, ",", "\r\n");
改成
s = "";
if (n>0) s = AdoRs.GetString(2, n, ",", "\r\n");

TOP

回复 22# powerbat


老大出现抓狂的事,这个TXT文件一直报错:在此环境中允许操作!
请帮助分析!发现这个TXT数据后面的时间有部分是相同的会不会是这个原因?尝试将时间去掉也不行崩溃中

TOP

回复  jeeee


    现在就是这样做的。
你在原文件中搜索一下我的代码结果中你认为是非重复行的,比如 ...
powerbat 发表于 2011-11-26 11:52


仔细看了一下合并的TXT似乎有一些乱码及中文字,我重新合并再试一下,单个文件包没有问题并且输出了正确的结果。测试后再报告结果谢谢

TOP

回复 20# jeeee


    现在就是这样做的。
你在原文件中搜索一下我的代码结果中你认为是非重复行的,比如“PBFBEPB110240001,2011/3/13,3:23:32”,看看原文件中有没有它的重复行。
或者你取部分数据压缩上传,以助于更好的分析。

TOP

回复 18# yyykkkyyyy

楼上的多心了,我只是看到8楼没有代码,以为楼主回复错了,没有细看,所以问了一下。

批处理是一个很常用的概念和技术,永远不可能过时。
但批处理bat脚本毕竟功能有限,有些事情虽然也可以完成,但效率就要大打折扣。
就好比要过滤文本中含有特定字符的行,单纯用cmd.exe的内部命令也可以实现(比如for /f 读取, 用!var!跟!var:str=!进行比较)
但有一些外部命令如find.exe/findstr.exe,甚至第三方工具如sed.exe/awk.exe等,做起来更完美、效率更高,为什么不去用它们呢?
用合适的工具做合适的事,也是一种技巧。

TOP

你原文件中的重复数据可能正好是整行内容完全相同,即除了第一列外日期部分也相同,所以过滤后只显示了一条 ...
powerbat 发表于 2011-11-26 08:58



      是的有日期相同,不过二个数据之间的秒数最少间隔一秒。现在只能批处理去掉时间再过滤,是否能做到只找出相同数值,忽略后面的日期时间?

TOP

本帖最后由 jeeee 于 2011-11-26 10:42 编辑
呵呵,高人多多, 显得回复我一句都欠妥,其实即便我水平低也还是有观点的。
本来嘛,bat也好 js也好 还是vb ...
yyykkkyyyy 发表于 2011-11-26 09:36



学无止境这才是乐趣,你提供的代码其实也达到了效果速度稍许慢而已,已经是我等菜鸟不可及的

TOP

呵呵,高人多多, 显得回复我一句都欠妥,其实即便我水平低也还是有观点的。
本来嘛,bat也好 js也好 还是vbs也好,都是一家开发出来的,不知各位版主有何感慨,本版代码咨询与讨论,已经很明显 bat 因就DOS功能加以扩展,系统功能无论是规模还是速度,是比不过与系统结合更紧密的脚本的,我早就认为 批处理的优势在于它的短小精悍,powerbat 高手似乎启示我等——不要去钻批处理了,那玩意我是从那走到头了的
即便如此,bat 的生命力还是如此顽强,各高级语言开发了软件后仍不时会用它,如果说制作启动盘或研发新的 ...  我知道我的水平不配讨论此话题,只是有感而发

TOP

你原文件中的重复数据可能正好是整行内容完全相同,即除了第一列外日期部分也相同,所以过滤后只显示了一条结果。
你仔细看看是不是这样。

TOP

本帖最后由 jeeee 于 2011-11-26 01:49 编辑
回复  jeeee


你的意思是多条重复数据只记录一次吧?
好办,select * 改成 select DISTINCT  *
powerbat 发表于 2011-11-26 01:06



改好代码好用运行速度飞快,7MB的数据不到10秒出结果,不过把没有重复数据也找出来了,请再看看!红色是被找出的重复数据,黑色的是没有被重复的
PBFBEPA110610145,2011/5/22,22:34:35
PBFBEPA110610145,2011/5/22,22:36:13
PBFBEPA110750117,2011/8/1,22:12:01
PBFBEPA110750117,2011/8/1,22:12:04
PBFBEPB110220058,2011/3/27,5:02:00
PBFBEPB110220058,2011/3/27,5:02:11

PBFBEPB110240001,2011/3/13,3:23:32
PBFBEPB110240004,2011/3/13,3:27:18
PBFBEPB110240007,2011/3/13,3:22:06
PBFBEPB110240009,2011/3/13,3:29:24
PBFBEPB110240012,2011/3/20,3:57:53
PBFBEPB110240017,2011/3/13,3:18:50
PBFBEPB110240020,2011/3/13,3:20:20
PBFBEPB110240028,2011/3/20,0:36:58
PBFBEPB110240030,2011/3/20,0:37:37
PBFBEPB110240031,2011/3/20,0:38:10
PBFBEPB110240032,2011/3/20,0:39:44
PBFBEPB110240033,2011/3/13,3:24:02
PBFBEPB110240037,2011/3/13,3:21:43
PBFBEPB110240039,2011/3/20,23:20:47
PBFBEPB110240043,2011/3/20,23:18:07
PBFBEPB110240045,2011/3/20,23:11:49
PBFBEPB110240046,2011/3/20,5:31:22
PBFBEPB110240046,2011/3/20,23:11:35
PBFBEPB110240048,2011/3/13,3:25:39
PBFBEPB110240052,2011/3/20,23:14:16
PBFBEPB110240054,2011/3/13,3:16:51
PBFBEPB110240055,2011/3/13,3:28:01
PBFBEPB110240056,2011/3/13,3:14:37
PBFBEPB110240059,2011/3/13,3:13:48

TOP

回复 12# jeeee


你的意思是多条重复数据只记录一次吧?
好办,select * 改成 select DISTINCT  *
1

评分人数

    • jeeee: 热心助人为乐技术 + 1

TOP

回复  jeeee


    你这是回复谁呢?
powerbat 发表于 2011-11-26 00:56


    抱歉给你的回复在12楼,谢谢

TOP

回复 7# CrLf


   谢谢版主老大。高人真多困扰了几天时间一下子就解决了这里真是一个学习的好地方,学无止境啊!

TOP

返回列表