使用tomcat日志对访问ip进行排序

来源:互联网 发布:云校app软件下载 编辑:程序博客网 时间:2024/05/16 06:34
tomcat日志记录了ip对网站的访问情况,现在看看怎么用linux命令对那些ip进行数量排序:
日志样本如下:
oracle[~/oracle/rdbms/admin/mysql/10046]$cat /var/www/html/apache-tomcat-7.0.27/logs/localhost_access_log.2013-01-09.txt
21.101.128.28 - - [09/Jan/2013:11:31:17 +0800] "GET /TestPrj/index.jsp HTTP/1.1" 200 1189
21.101.128.28 - - [09/Jan/2013:11:31:23 +0800] "POST /TestPrj/AllServlet HTTP/1.1" 200 -
21.101.128.28 - - [09/Jan/2013:11:31:59 +0800] "GET /TestPrj/ HTTP/1.1" 200 2233
21.101.128.28 - - [09/Jan/2013:11:32:02 +0800] "GET /TestPrj/AllServlet?methodName=1&id=&name= HTTP/1.1" 200 2357
21.101.128.28 - - [09/Jan/2013:11:32:16 +0800] "GET /TestPrj/index.jsp HTTP/1.1" 200 1189
21.101.128.28 - - [09/Jan/2013:11:32:21 +0800] "POST /TestPrj/AllServlet HTTP/1.1" 200 2233
21.101.128.28 - - [09/Jan/2013:11:32:28 +0800] "POST /TestPrj/AllServlet HTTP/1.1" 200 2612
21.101.128.28 - - [09/Jan/2013:11:32:39 +0800] "GET /TestPrj/putin.jsp HTTP/1.1" 200 2233
21.101.128.28 - - [09/Jan/2013:11:32:40 +0800] "POST /TestPrj/AllServlet HTTP/1.1" 200 819
21.101.128.28 - - [09/Jan/2013:11:32:40 +0800] "POST /TestPrj/AllServlet HTTP/1.1" 200 819
21.101.128.28 - - [09/Jan/2013:11:32:47 +0800] "POST /TestPrj/AllServlet HTTP/1.1" 200 2861
21.101.128.28 - - [09/Jan/2013:11:32:53 +0800] "POST /TestPrj/AllServlet HTTP/1.1" 200 1237
21.101.128.28 - - [09/Jan/2013:11:32:56 +0800] "GET /TestPrj/AllServlet?methodName=1&id=&name= HTTP/1.1" 200 2861
21.101.128.28 - - [09/Jan/2013:11:39:08 +0800] "GET /TestPrj/index.jsp HTTP/1.1" 200 1189

日志第一个字段就是ip地址,字段之间分隔符是空格:
1、使用awk:(awk默认分割符就是空格,所以-F选项可以不要)
awk -F ' ' '{print $1}' /var/www/html/apache-tomcat-7.0.27/logs/localhost_access_log.2012-12-27.txt | sort | uniq -c | sort -u
使用awk命令输出每行的第一列 ,-F ‘ ’表示每一行上字符串之间间隔符号是空格,完了用sort排序,接着用uniq -c累计,然后再次用sort  -u对累计结果排序。
2. 、使用cut:(需要注意的是,cut默认的分隔符是<tab>,所以-d选项是必须要的)
cut -d ' ' -f1 /var/www/html/apache-tomcat-7.0.27/logs/localhost_access_log.2012-12-27.txt | sort | uniq -c | sort -u。
原理同上了。
原创粉丝点击