awk是在日志文件中搜索日期/时间范围的最快方法吗?

时间:2015-07-21 07:45:37

标签: regex linux bash performance awk

我正在尝试制作一个脚本,用于搜索日志文件中某个时间/日期范围之间发生的日志行。

我尝试使用此页面中的解决方案:

Filter log file entries based on date range

该解决方案工作正常,但需要一些时间才能完成。是否还有其他方法可以执行此搜索,从而更快地产生结果?在这种情况下,我不是关于速度的强迫症,只是我正在搜索一些包含几千兆字节数据的系统日志文件,所以如果我可以节省一些时间,这将是非常棒的。想到Grep与正则表达式,但我不确定它是否会产生那么大的差异。

以下是日志文件中使用的日志格式:

2014-12-31T23:59:33-05:00设备logdata

3 个答案:

答案 0 :(得分:2)

这些行已排序,因此您可以使用look命令。它应该比awkgrep快得多,因为它使用二进制搜索。

答案 1 :(得分:0)

答案 2 :(得分:0)

如果您真的在搜索性能优化解决方案,那么忘记处理整个日志文件的工具。我希望日志文件按时间排序,因此您不需要扫描整个文件。您可以编写一个简单的脚本/程序并实现二分法来查找时间间隔边界,然后在两者之间打印所有内容。