grep在一个巨大的日志文件(> 14 GB)只有最后x GB?

我需要search一个巨大的日志文件(超过14 GB)。 我很确定它在最后4 GB左右。

有没有办法跳过第一个X GB来加快速度?

我想你可以使用尾巴只输出最后4GB左右,通过使用-c开关

-c,–bytes = [+] NUM
输出最后的NUM个字节; 或者使用-c + NUM输出从每个文件的字节NUM开始输出

你也可以通过设置bs=1做一些dd操作 ,然后skip你想要启动的偏移量

 dd if=file bs=1 skip=12g | grep something 

我只是发布这个,因为一些意见要求。

我最终使用的是(15 GB的文件)。 它工作得非常快,为我节省了大量的时间。

 tail -f -c 14G file | grep something 

我也对同一个文件做了一个非常基本的testing。 我testing了:

grep xxx文件
//持续(> 5分钟)

dd if = file bs = 1 skip = 14G | grep xxx
//很快<1秒

尾巴-c 14g | grep xxx
//很快<2秒

tail只是短一点。

注意:使用gg的后缀每个命令都不相同(Ubuntu 15.10)

这不会回答标题问题,但它会做你想做的事情。 使用tac来反转文件,然后使用grep来查找你的string。 如果string只在文件中出现一次或已知次数,则让它运行直到find已知的出现次数。 这样,如果你对文件在哪里的假设是不正确的,它仍然会find它。 如果你想限制它,你可以用head来做到这一点。 头部命令会在tac和grep之间进行。

所以命令如下所示:

 tac < logfile | grep myString