求能够对多个TXT文本内容进行比对并去重的软件,文件数量较多
在百度上面搜索了,发现:TXT文本去重 TXT去重 TXT文本合并去重工具 —— 20亿行130GB的数据只需60分钟_zhengzizhi的博客-CSDN博客_txt去重
咨询了作者,软件居然3500。。。
解决方案使用EmEditor,并设置足够大的虚拟缓存即可
求能够对多个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
请问有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
说不定这是一个好选择,去官网看了看,支持的大文件体积惊人!
有用户在介绍它的去重功能很牛逼
Emeditor – windows平台最强文本编辑器,没有之一 - 知乎 (zhihu.com)