关于正则表达式:awk是在日志文件中搜索日期/时间范围的最快方法吗?

Is awk the fastest way to search for a date/time range in a log file?

我正在尝试创建一个脚本,该脚本将搜索在日志文件中特定时间/日期范围之间发生的日志行。

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

根据日期范围过滤日志文件条目

该解决方案可以正常工作,但是需要一些时间才能完成。还有其他方法可以更快地产生结果吗?在这种情况下,我不是关于速度的OCD,只是我正在搜索一些每个包含数GB数据的syslog文件,因此,如果我可以节省一些时间进行搜索,那就太好了。我想到了带有正则表达式的Grep,但是我不确定这是否会带来很大的改变。

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

2014-12-31T23:59:33-05:00设备日志数据


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


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


fgrep不使用正则表达式的日期可能会更快

https://unix.stackexchange.com/questions/88503/using-grep-or-awk

https://davidlyness.com/post/the-functional-and-performance-differences-of-sed-awk-and-other-unix-parsing-utilities