日志test.log格式是这样的
abc.abc.com.cn - - [16/May/2005:18:46:27 +0800] "GET /xxx.html HTTP/1.1" 200 296
abc.abc.com.cn - - [16/May/2005:18:46:27 +0800] "GET /xxx.html HTTP/1.1" 200 296
bbc.abc.com.cn - - [16/May/2005:18:46:27 +0800] "GET /yyy.html HTTP/1.1" 200 296
使用cat test.log | cut -d"." -f1 | sort | uniq -c | sort -rn可以得到
abc 2
bbc 1
就是abc这个主机被访问了两次,bbc被访问1次
下面统计xxx和yyy页面被访问的次数
cat test.log | cut -d" " -f7 | sort | uniq -c | sort -rn
得到:
2 xxx.html
1 yyy.html
输出结果格式化为sql语句就更好了,需要用awk:
cat test.log | cut -d"." -f1 | sort | uniq -c | sort -rn | awk '{print "update pv set num=num+"$1" where userid=/""$2"/";";}'
得出结果是:
update pv set num=num+2 where userid="xxx";
update pv set num=num+1 where userid="yyy";