如何输出access_log的第一次和最后一次时间,以便快速查看access_log记录的时间范围?输出可能如下所示:
[21/Aug/2014:06:29:41 -0400] :::: [21/Aug/2014:10:29:41 -0400]
我的access_log路径是:
/var/www/vhosts/example.com/statistics/logs/access_log
访问日志条目示例:
123.123.123.123 - - [21/Aug/2014:08:12:30 -0400] "GET /wp-content/themes/simple/comment-style.css HTTP/1.1" 200 6221 "http://example.com/?p=1" "Mozilla/5.0 (X11; Linux i686; rv:31.0) Gecko/20100101 Firefox/31.0"
答案1
如果您的日志条目不严格按时间顺序排列,在 GNU 系统上,您可以执行以下操作:
# 1 2
# 12345678901234567890
# [21/Aug/2014:06:29:41 -0400]
< access.log sed -n 's/^[^[]*\(\[[^]]*]\).*/\1/p' |
sort -k1.9n -k1.5M -k1.2n -k1.14,1.21 |
sed -n '1p;$p' | paste -sd -
每年夏令时和冬令时切换时,结果可能会出现错误。
答案2
您可以使用sed
:
sed -n '1p;$p' /var/www/vhosts/example.com/statistics/logs/access_log
或者awk
awk 'NR==1;END{print}' /var/www/vhosts/example.com/statistics/logs/access_log
还有其他方法也使用tail
和head