求能够对多个TXT文本内容进行比对并去重的软件

求能够对多个TXT文本内容进行比对并去重的软件,文件数量较多
在百度上面搜索了,发现:TXT文本去重 TXT去重 TXT文本合并去重工具 —— 20亿行130GB的数据只需60分钟_zhengzizhi的博客-CSDN博客_txt去重
咨询了作者,软件居然3500。。。

解决方案使用EmEditor,并设置足够大的虚拟缓存即可

说的不够详细啊.

如果只是简单的比较去重, Beyond Compare 就足够了.

文件数量较多

按行或者按文件這個自己寫也可以吧。

你可以详细说说,最好举个例子,然后帮你想办法,或者给你个解决方案。

数据没大到机器吃不消的程度就合并、排序(sort)、去重(uniq)就行了,都是Linux自带的命令

这个我比较有发言权

基本的方法:
进入cygwin环境 安装好gawk 软件包
cat ./dir/*.txt | awk ‘{if(a[$0]!=1){print};a[$0]=1;}’ >去重后的文本.txt

这个是最快速的方法。
如果你只想用perl语言

cat ./dir/*.txt | perl -ne ‘{unless(exists $a{$_}){print $_};$a{$_}=1;}’ >去重后的文本.txt

上面只是去重复,

如果想要输出结果加上排序

cat ./dir/*.txt | sort|uniq >去重后的文本.txt

1 Like

请问有win10下面能用的软件吗,大概几十个G。。。

这个涉及到哈希运算的技术问题了。

1GB的文本,可能需要4GB以上的内存。

这么大的文件如果你要去重复,只有分治策略。

具体方法是分别对 a b c …z开头的行分别去重复

如果实在过大,按照 aa ab ac a1 a2 … zz分类

每行一个邮箱账号?
那重新导入数据库,一个distinct就解决了

据我所知,mysql数据量破百万后,性能会急速下降
内存哈希法是最快速。

不知道128GB内存+redis+(python /perl)是不是最快的方案

sqlite都能支持千万。
几亿的那些,可以采用分区表。mssql2005在64G内存的服务器,分100个区,对付10亿不是问题

EmEditor

说不定这是一个好选择,去官网看了看,支持的大文件体积惊人!

image

有用户在介绍它的去重功能很牛逼
Emeditor – windows平台最强文本编辑器,没有之一 - 知乎 (zhihu.com)