一个设备内存2M,一个1G大小的文件,这个文件有若干行,输出其中的带有hello的行以及行数
第一种 linux上的awk命令:
awk '{if($1 == "113.111.211.224"){print $0}}' temp.log
第二种:PHP程序yield ,和awk这个命令用的时间差不多一样,效率是很高的
$file = __DIR__."/temp.log";foreach(readfilecongent($file) as $k=>$val){// echo $k;// if(stristr($val,'') !== false){// echo $i ."==". $val."<br/>";// }// if($k < 1000){if(stristr($val,'113.111.211.224') !== false){echo $k ."==". $val."<br/>";}// }
}// echo $file;exit;
function readfilecongent($file){if(file_exists($file)){$fb = fopen($file,'r');while(feof($fb) === false){yield fgets($fb);}} else {echo "文件不存在!";}}