后端开发|php教程
在内存小于文件大小的情况下,大文件中快速查找定位一行
后端开发-php教程
内存 大文件
如何上传php源码包,装ubuntu还是ros,tomcat8启动出错,爬虫 所有apk,php封装扩展,海沧区百度seo优化lzw
比如有一个文件
ABC 56
DEF 100
RET 300
…
php教育网站源码,vscode中修改快捷键,ubuntu弹出终端,清除Tomcat所有文件,adb实现爬虫,php制作报表,如何做谷歌seo推广运营lzw
文件有2列,第一列都是不重复的,第2列表示次数(当成一个数字就行了)。
nz源码授权转让,vscode官网地址,扩展ubuntu内存,tomcat更改窗口名称,爬虫玩具,php 经典面试题,河南短视频seo操作,网站管理系统素材下载,my area活动表格模板lzw
如果文件大小为2G或者更大,内存只有1G的情况,如何快速定位到“ABC 56” 这一行。
请大拿们给个清晰点的解决方法。
回复讨论(解决方案)
没明白您是什么意思?
如果是打开文件想快速找到某一行的话,可以使用vi或者more将文件打开;
然后输入: /ABC 回车就好了
fopen,再fscanf。
一次读一行就好啊。内存不会成为限制因素的。
有没有人知道啊?
如果是一行一行读,那效率就不行啦。
还有没有更快速的方法呢?
我的思路是建一张哈希表,然后根据哈希算法,再用那个哈希碰撞的原理去排重。
不知道各位有什么好的意见没
建hash表的话,岂不是要先对文件的内容进行hash?
可以用其他的工具来处理,未必一定要用算法。
比如awk:
awk ‘/ABC\t56/{ print NR}’ file
可以获取匹配行的行号。
建议lz说下具体的需求,如果仅仅是获取行号的话,方案很多。
但是如果还有其他需求的话,类似awk这么做未必是最佳方案。
有没有人知道啊?
如果是一行一行读,那效率就不行啦。
还有没有更快速的方法呢?
我的思路是建一张哈希表,然后根据哈希算法,再用那个哈希碰撞的原理去排重。
不知道各位有什么好的意见没 那你不也得先一行一行读出来再哈希吗?
嫌一行一行读太慢,可以一块一块读
有没有人知道啊?
如果是一行一行读,那效率就不行啦。
还有没有更快速的方法呢?
我的思路是建一张哈希表,然后根据哈希算法,再用那个哈希碰撞的原理去排重。
不知道各位有什么好的意见没 那你不也得先一行一行读出来再哈希吗?
嫌一行一行读太慢,可以一块一块读
是的读块 比较符合你的需求
楼主可参考:
/blog/archives/php-read-large-file/
/php-large-file-read-operation.html
建hash表的话,岂不是要先对文件的内容进行hash?
可以用其他的工具来处理,未必一定要用算法。
比如awk:
awk ‘/ABC\t56/{ print NR}’ file
可以获取匹配行的行号。
建议lz说下具体的需求,如果仅仅是获取行号的话,方案很多。
但是如果还有其他需求的话,类似awk这么做未必是最佳方案。
需求就是怎么能快速找到? 比如我想知道ABC后面的数字,或者DEF后面的数字…
有没有人知道啊?
如果是一行一行读,那效率就不行啦。
还有没有更快速的方法呢?
我的思路是建一张哈希表,然后根据哈希算法,再用那个哈希碰撞的原理去排重。
不知道各位有什么好的意见没 那你不也得先一行一行读出来再哈希吗?
嫌一行一行读太慢,可以一块一块读
内存怎么一块一块读呢? 能给个例子吗?