我需要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
只是短一点。
注意:使用g
和g
的后缀每个命令都不相同(Ubuntu 15.10)
这不会回答标题问题,但它会做你想做的事情。 使用tac来反转文件,然后使用grep来查找你的string。 如果string只在文件中出现一次或已知次数,则让它运行直到find已知的出现次数。 这样,如果你对文件在哪里的假设是不正确的,它仍然会find它。 如果你想限制它,你可以用head来做到这一点。 头部命令会在tac和grep之间进行。
所以命令如下所示:
tac < logfile | grep myString