从文件末尾

时间:2016-12-06 03:05:15

标签: bash

我有大型日志文件300-500兆,需要在其中进行搜索。我目前正在使用php代码中的grep执行此操作,但我想进一步优化代码。 我需要的数据总是在文件的最后10000行内,所以我希望搜索从结束开始并向前移动直到找到模式并停止。

我发现一些信息,tac可以做到这一点,但我的性能测试显示使用tac慢4倍。 目前我的搜索大约需要0.13秒才能完成,并且添加tac需要0.50。我觉得我错过了什么,我很感激帮助。

我的期望是,如果我从正确的方向读取文件,这将大大提高过程的速度。

这是代码,它包含计时器

<?php
exec('grep -r "search var" file.log -b  | head -1', $result);
echo $result[0];

$time = microtime(true) - $_SERVER["REQUEST_TIME_FLOAT"];
echo "<br>".$time; 
?>

1 个答案:

答案 0 :(得分:2)

您可以使用-r避免使用grep标记。你只想在最后10000行内搜索对吗?所以直接tail它和grep模式。

tail file.log -n 10000 | grep "search var"