标题: [文本处理] 批处理如何快速去掉大文件重复的行? [打印本页]
作者: nono84223860 时间: 2014-7-2 14:52 标题: 批处理如何快速去掉大文件重复的行?
两个都大于1G的TXT,如何快速去掉重复的行,我内存只有4G,一些工具去除太慢了,快的又要求大内存,有没有好的办法处理,都是英文和数字组合的行来的,没有中文
不用合并,只去重复就可以了
作者: nono84223860 时间: 2014-7-2 15:06
大神,坐等答案。。。。。。。。
作者: CrLf 时间: 2014-7-2 15:08
试试这个:- @findstr /v /x /l /g:1.txt 2.txt>3.txt
复制代码
作者: nono84223860 时间: 2014-7-2 15:57
回复 3# CrLf
需要处理多久,已经半个小时没动静。。。。。。。。。。。。。
作者: CrLf 时间: 2014-7-2 16:32
文件那么大有什么办法,求快得用 hash 表,那是用空间换时间,非常占内存
作者: CrLf 时间: 2014-7-2 16:57
如果顺序无关紧要,可以这样,需要用到 Gnu sort-7.6.exe 与 gawk- @echo off
- findstr . a.txt b.txt>临时.txt
- sort-7.6.exe -t ':' -k2 -u 临时.txt -o 临时.txt
- gawk -F":" "{OUTFILE=$1;sub($1 FS,\"\");print>OUTFILE}" 临时.txt
复制代码
作者: terse 时间: 2014-7-2 17:17
楼主的意思是想得到两个文件合并后并去掉重复行的新文件吗?
作者: DAIC 时间: 2014-7-2 18:27
是需要对比两个文件获取它们之间不同的行?
比如 1.txt
a
b
c
2.txt
a
c
得到3.txt
b
还是需要分别处理两个文件,删除各自文件里面的重复行?
比如1.txt
a
b
a
c
得到3.txt
abc
作者: nono84223860 时间: 2014-7-10 23:41
回复 5# CrLf
hash表,容易上手吗
作者: nono84223860 时间: 2014-7-10 23:52
回复 6# CrLf
Gnu sort-7.6.exe放到哪里。。
作者: nono84223860 时间: 2014-7-11 00:00
回复 6# CrLf
闪退,不知道 是不是没把那个什么7.6装好
我复到 C:\Windows\System32 文件夹下
作者: wjx515 时间: 2014-7-16 16:08
使用gawk吧 ,速度很快,源文件b.txt,去重复后文件a.txt
gawk "{a[$0]++;if(a[$0]==1)print $0}" b.txt>>a.txt
作者: DAIC 时间: 2014-7-16 17:07
回复 12# wjx515 - gawk "!a[$0]++" b.txt > a.txt
复制代码
作者: elec 时间: 2014-7-17 12:56
回复 13# DAIC
uniq -u a.txt > b.txt
作者: DAIC 时间: 2014-7-17 13:33
回复 14# elec
使用uniq去重有一个前提:文件是排序的。
作者: elec 时间: 2014-7-17 14:08
回复 15# DAIC
谢啦~~复制代码
作者: DAIC 时间: 2014-7-17 14:45
回复 16# elec
另外一种写法是 sort -u
它可以直接去重
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |