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

[文本处理] 批处理如何快速去掉大文件重复的行?

两个都大于1G的TXT,如何快速去掉重复的行,我内存只有4G,一些工具去除太慢了,快的又要求大内存,有没有好的办法处理,都是英文和数字组合的行来的,没有中文



不用合并,只去重复就可以了

大神,坐等答案。。。。。。。。

TOP

试试这个:
  1. @findstr /v /x /l /g:1.txt 2.txt>3.txt
复制代码

TOP

回复 3# CrLf


    需要处理多久,已经半个小时没动静。。。。。。。。。。。。。

TOP

文件那么大有什么办法,求快得用 hash 表,那是用空间换时间,非常占内存

TOP

如果顺序无关紧要,可以这样,需要用到 Gnu sort-7.6.exegawk
  1. @echo off
  2. findstr . a.txt b.txt>临时.txt
  3. sort-7.6.exe -t ':' -k2 -u  临时.txt -o 临时.txt
  4. gawk -F":" "{OUTFILE=$1;sub($1 FS,\"\");print>OUTFILE}" 临时.txt
复制代码
1

评分人数

    • nono84223860: 虽然不知道能不能用,但是这个大师多次耐心 ...技术 + 1

TOP

楼主的意思是想得到两个文件合并后并去掉重复行的新文件吗?

TOP

是需要对比两个文件获取它们之间不同的行?
比如 1.txt
a
b
c

2.txt
a
c

得到3.txt
b


还是需要分别处理两个文件,删除各自文件里面的重复行?
比如1.txt
a
b
a
c

得到3.txt
abc

TOP

回复 5# CrLf


    hash表,容易上手吗

TOP

回复 6# CrLf


Gnu sort-7.6.exe放到哪里。。

TOP

回复 6# CrLf

闪退,不知道 是不是没把那个什么7.6装好

我复到 C:\Windows\System32 文件夹下

TOP

使用gawk吧 ,速度很快,源文件b.txt,去重复后文件a.txt
gawk "{a[$0]++;if(a[$0]==1)print $0}" b.txt>>a.txt

TOP

回复 12# wjx515
  1. gawk "!a[$0]++" b.txt > a.txt
复制代码
1

评分人数

    • storm8: 高手!学习了技术 + 1

TOP

回复 13# DAIC
    uniq -u a.txt > b.txt

TOP

回复 14# elec


    使用uniq去重有一个前提:文件是排序的。

TOP

返回列表