文本处理

edited 2013年03月07日 问答求助

@chuck911 我这里有几个10GB+的文本文件,每行一条数据(字符数~300-500),现在怎么把他们中间的重复数据去掉呢?我电脑内存2GB,一次性读不进来。有没有什么好点的算法,比较快的处理,帮忙给点思路哟~~~~

回复

  • 买的数据?好大的文件

  • php的fgets函数是可以每次读一行的,这样不会有内存限制了

    不过去除重复的话,可能还是挺麻烦的,可以把每行的md5值存在数据库,然后比对
    <?php $handle = @fopen("/xx.txt", "r"); if ($handle) { while (($buffer = fgets($handle, 4096)) !== false) { //每次读一行 echo $buffer; } if (!feof($handle)) { echo "Error: unexpected fgets() fail\n"; } fclose($handle); } ?>

  • @chuck911 确实麻烦哎,数据库可以自动去重吗
    @colin 不是买的

  • @test 存入数据库的话,写个脚本就可以去重了。但是要存入数据库的话还是得占很大空间啊,所以我说存md5值

登录注册 才能回复。