这是我的问题,我有一组大的gz
日志文件,该行中的第一个信息是日期时间文本,例如:2014-03-20 05:32:00。
我需要检查哪些日志文件包含特定数据。 对于init,我只需执行:
'-query-data-'
zgrep -m 1 '^20140320-04' 20140320-0{3,4}*gz
但是如何对最后一行执行相同操作而不处理整个文件,就像使用zcat(太重)一样:
zcat foo.gz | tail -1
其他信息,这些日志是根据它的初始记录的数据时间创建的,所以如果我想在14:00:00查询日志,我还必须在14:00之前创建的文件中搜索:00,文件将在13:50:00创建,并在14:10:00关闭。
答案 0 :(得分:1)
好吧,如果您先前为每个文件创建了 index ,则可以随机访问压缩文件...
我开发了一个命令行工具,该工具为gzip文件创建索引,从而可以在其中快速随机访问: https://github.com/circulosmeos/gztool
该工具有两个您可能会感兴趣的选项:
$ gztool -t foo.gz | tail -1
请注意,如果该索引不存在,则将花费与完全解压缩相同的时间:但是由于该索引可重用,因此下次搜索的时间将大大减少!此工具基于zran.c demonstration code from original zlib,因此没有规则外的魔力!