在内存小于文件大小的情况下,大文件中快速查找定位一行比如有一个文件 ABC 56 DEF 100 RET 300 ... 文件有2列,第一列都是不重复的,第2列表示次数(当成一个数字就行了)。 如果文件大小为2G或者更大,内存只有1G的情况,如何快速定位到“ABC 56” 这一行。 请大拿们给个清晰点的解决方法。 内存 大文件 分享到: ------解决方案--------------------fopen,再fscanf。 一次读一行就好啊。内存不会成为限制因素的。------解决方案--------------------建hash表的话,岂不是要先对文件的内容进行hash? 可以用其他的工具来处理,未必一定要用算法。 比如awk: awk '/ABC\t56/{ print NR}' file 可以获取匹配行的行号。 建议lz说下具体的需求,如果仅仅是获取行号的话,方案很多。 但是如果还有其他需求的话,类似awk这么做未必是最佳方案。------解决方案-------------------- 引用: Quote: 引用: 有没有人知道啊? 如果是一行一行读,那效率就不行啦。 还有没有更快速的方法呢? 我的思路是建一张哈希表,然后根据哈希算法,再用那个哈希碰撞的原理去排重。 不知道各位有什么好的意见没 那你不也得先一行一行读出来再哈希吗? 嫌一行一行读太慢,可以一块一块读 是的读块 比较符合你的需求------解决方案--------------------楼主可参考: http://www.fantxi.com/blog/archives/php-read-large-file/ http://sjolzy.cn/php-large-file-read-operation.html