比如有一个文件
ABC   56
DEF   100
RET   300
...文件有2列,第一列都是不重复的,第2列表示次数(当成一个数字就行了)。如果文件大小为2G或者更大,内存只有1G的情况,如何快速定位到“ABC  56” 这一行。请大拿们给个清晰点的解决方法。内存大文件

解决方案 »

  1.   

    没明白您是什么意思?
    如果是打开文件想快速找到某一行的话,可以使用vi或者more将文件打开;
    然后输入:   /ABC    回车就好了
      

  2.   

    fopen,再fscanf。
    一次读一行就好啊。内存不会成为限制因素的。
      

  3.   

    建hash表的话,岂不是要先对文件的内容进行hash?可以用其他的工具来处理,未必一定要用算法。
    比如awk:
    awk '/ABC\t56/{ print NR}' file
    可以获取匹配行的行号。建议lz说下具体的需求,如果仅仅是获取行号的话,方案很多。
    但是如果还有其他需求的话,类似awk这么做未必是最佳方案。
      

  4.   

    楼主可参考:
    http://www.fantxi.com/blog/archives/php-read-large-file/http://sjolzy.cn/php-large-file-read-operation.html
      

  5.   


    需求就是怎么能快速找到? 比如我想知道ABC后面的数字,或者DEF后面的数字...