我正在尝试制作一个脚本,用于搜索日志文件中某个时间/日期范围之间发生的日志行。
我尝试使用此页面中的解决方案:
Filter log file entries based on date range
该解决方案工作正常,但需要一些时间才能完成。是否还有其他方法可以执行此搜索,从而更快地产生结果?在这种情况下,我不是关于速度的强迫症,只是我正在搜索一些包含几千兆字节数据的系统日志文件,所以如果我可以节省一些时间,这将是非常棒的。想到Grep与正则表达式,但我不确定它是否会产生那么大的差异。
以下是日志文件中使用的日志格式:
2014-12-31T23:59:33-05:00设备logdata
答案 0 :(得分:2)
这些行已排序,因此您可以使用look命令。它应该比awk
或grep
快得多,因为它使用二进制搜索。
答案 1 :(得分:0)
fgrep没有正则表达式的日期可能会更快
https://unix.stackexchange.com/questions/88503/using-grep-or-awk
答案 2 :(得分:0)
如果您真的在搜索性能优化解决方案,那么忘记处理整个日志文件的工具。我希望日志文件按时间排序,因此您不需要扫描整个文件。您可以编写一个简单的脚本/程序并实现二分法来查找时间间隔边界,然后在两者之间打印所有内容。