通过shell命令从access_log文件获取每天的总点击次数

时间:2013-01-14 16:11:59

标签: shell unix

我有一个这种格式的access_log文件:

65.175.123.152 - - [08/May/2007:02:17:40 +0200] "GET /favicon.ico HTTP/1.1" 404 217 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11"

现在我希望每天使用unix shell命令获得总点击量。

我认为使用grep需要做些什么,我是unix的新手,那么最好的方法是什么?

1 个答案:

答案 0 :(得分:1)

对于某一天,您可以这样做:

grep 08/May/2007 /var/log/httpd/access_log | wc -l

即,查找具有给定日期的所有访问日志条目,然后计算找到的行数。

如果您希望在日志中为所有日期生成每天的点击报告:

awk '
  {
    when=substr($4, 2, 11);
    totals[when]++
  } 
  END {
    for (i in totals) 
      print i, totals[i]
  }' /var/log/httpd/access_log | sort

结果如下:

01/Jan/2013 9
02/Jan/2013 33
03/Jan/2013 262
04/Jan/2013 35
05/Jan/2013 19
06/Jan/2013 9
07/Jan/2013 24
08/Jan/2013 68
09/Jan/2013 16
10/Jan/2013 16