找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 72814|回复: 16

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

[复制链接]
发表于 2014-7-2 14:52:20 | 显示全部楼层 |阅读模式
两个都大于1G的TXT,如何快速去掉重复的行,我内存只有4G,一些工具去除太慢了,快的又要求大内存,有没有好的办法处理,都是英文和数字组合的行来的,没有中文



不用合并,只去重复就可以了
 楼主| 发表于 2014-7-2 15:06:34 | 显示全部楼层
大神,坐等答案。。。。。。。。
发表于 2014-7-2 15:08:39 | 显示全部楼层
试试这个:
  1. @findstr /v /x /l /g:1.txt 2.txt>3.txt
复制代码
 楼主| 发表于 2014-7-2 15:57:29 | 显示全部楼层
回复 3# CrLf


    需要处理多久,已经半个小时没动静。。。。。。。。。。。。。
发表于 2014-7-2 16:32:47 | 显示全部楼层
文件那么大有什么办法,求快得用 hash 表,那是用空间换时间,非常占内存
发表于 2014-7-2 16:57:47 | 显示全部楼层
如果顺序无关紧要,可以这样,需要用到 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技术 +1 收起 理由
nono84223860 + 1 虽然不知道能不能用,但是这个大师多次耐心 ...

查看全部评分

发表于 2014-7-2 17:17:22 | 显示全部楼层
楼主的意思是想得到两个文件合并后并去掉重复行的新文件吗?
发表于 2014-7-2 18:27:34 | 显示全部楼层
是需要对比两个文件获取它们之间不同的行?
比如 1.txt
a
b
c

2.txt
a
c

得到3.txt
b


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

得到3.txt
abc
 楼主| 发表于 2014-7-10 23:41:37 | 显示全部楼层
回复 5# CrLf


    hash表,容易上手吗
 楼主| 发表于 2014-7-10 23:52:25 | 显示全部楼层
回复 6# CrLf


Gnu sort-7.6.exe放到哪里。。
 楼主| 发表于 2014-7-11 00:00:27 | 显示全部楼层
回复 6# CrLf

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

我复到 C:\Windows\System32 文件夹下
发表于 2014-7-16 16:08:15 | 显示全部楼层
使用gawk吧 ,速度很快,源文件b.txt,去重复后文件a.txt
gawk "{a[$0]++;if(a[$0]==1)print $0}" b.txt>>a.txt
发表于 2014-7-16 17:07:13 | 显示全部楼层
回复 12# wjx515
  1. gawk "!a[$0]++" b.txt > a.txt
复制代码

评分

参与人数 1技术 +1 收起 理由
storm8 + 1 高手!学习了

查看全部评分

发表于 2014-7-17 12:56:32 | 显示全部楼层
回复 13# DAIC
    uniq -u a.txt > b.txt
发表于 2014-7-17 13:33:00 | 显示全部楼层
回复 14# elec


    使用uniq去重有一个前提:文件是排序的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-21 12:40 , Processed in 0.044239 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表