您能否建议我如何从输出如下的文件中获取特定时间范围:
81.200.176.13 - - [23/Mar/2021:09:34:03 +0000] "GET /crx/packmgr/img/thumbnail.png HTTP/1.1" 200 6235
我需要日期从 3 月 22 日 20 点到 22 点
答案1
由于您的时间范围非常具体,您可以使用grep
:
grep '\[23/Mar/2021:2[0-2]' /var/log/apache2/access.log
即搜索日期字符串并且比在20-22h范围内
或者,供将来参考,sed
可能是要走的路:
sed `/START/,/END/p`
例如
sed '/21\/Mar\/2021:01:/,/23\/Mar\/2021:22:/p'
如果你强制 apache 使用journald
(参考- 请注意那里的警告),将来甚至可能依赖:
journald -u apache2 --since "2021-03-23 20:00:00" --until "2021-03-23 22:00:00"
答案2
您不能在文本编辑器中打开日志文件,然后搜索最早的时间戳,然后从那里开始吗?如果你想让事情变得非常简单。
在 VIM 中,当您未处于编辑模式时,您可以编写 /2021:20 ,它会跳转到包含此时间戳的第一行。从那里滚动。