标题: [文本处理] [已完成]批处理怎样找出A文件中每行内容在B文件中找不到的? [打印本页]
作者: gcbgczhang 时间: 2021-7-31 14:00 标题: [已完成]批处理怎样找出A文件中每行内容在B文件中找不到的?
本帖最后由 gcbgczhang 于 2021-7-31 22:44 编辑
各位老师好。
找出a.txt中在b.txt中不存在的行,输出到c.txt
两文件都有10万行以上,用什么方法最快呀,我搞的太慢了。
a.txt内容
211203196802142025
211203196612102081
211203198612202057
410401198411240027
...
b.txt内容
211203198612202057
211281201009062014
410401198411240027
211203196410162019
...
要得到c.txt,内容为
211203196802142025
211203196612102081
作者: Batcher 时间: 2021-7-31 16:18
回复 1# gcbgczhang
请把你搞的发出来看一下
作者: idwma 时间: 2021-7-31 17:04
遍历一百亿次以上,这个每秒一千多万也要近二十分钟
@echo off
(for /f "delims=" %%a in (a.txt) do findstr "%%a" b.txt>nul||echo %%a)>c.txt
pause
作者: qixiaobin0715 时间: 2021-7-31 17:12
回复 1# gcbgczhang
如果文本像你提供的那样- @echo off
- setlocal enabledelayedexpansion
- for /f %%b in (b.txt) do set #%%b=true
- (for /f %%a in (a.txt) do if not defined #%%a echo,%%a)>c.txt
- pause
复制代码
作者: gcbgczhang 时间: 2021-7-31 17:21
谢谢楼上的老师,不知道灰什么不能一个个回复。我现在有新的问题,就是用导出来的列表到库里匹配全信息输出来,天,太慢了。
@echo off
setlocal enabledelayedexpansion
(for /f %%a in (列表.txt) do (
findstr /c:"%%a" 全信息.csv
))>nnccc.txt
列表内容就是这些身份证,而全信息其中一列包含身份证
作者: gcbgczhang 时间: 2021-7-31 17:45
老师,我用的这个,我自己搞的这个,文件小了感觉不出来,文件一大就抓狂。
@echo off
for /f "delims=*" %%i in (a.txt) do findstr %%i b.txt || echo %%i>>c.txt
作者: gcbgczhang 时间: 2021-7-31 17:45
回复 3# idwma
老师,你这个和我搞的一样啊…………。
作者: gcbgczhang 时间: 2021-7-31 17:55
回复 2# Batcher
老师,我回复到楼下了,这个花时间弄完了,我用了findstr和for.
作者: idwma 时间: 2021-7-31 17:58
回复 7# gcbgczhang
下次你可以用4楼那个方法,判断变量定义速度是真快
作者: Batcher 时间: 2021-7-31 18:38
回复 1# gcbgczhang
试试这样速度如何:- findstr /v /l /g:b.txt a.txt > c.txt
复制代码
作者: gcbgczhang 时间: 2021-7-31 22:43
回复 10# Batcher
2秒完成…….唉!!郁闷...我感觉也是用这个能比较,但看不明白参数没去实践.
作者: newswan 时间: 2021-7-31 23:51
文件比较命令 fc复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |