用cat統計apache日誌ip

  • 用cat統計apache日誌ipshell

     

    現有一段apache的日誌,須要從日誌中提取出訪問量最大的IP。使用shell實現。 apache

  • 日誌以下(只是舉例,故數據量較小): 日誌

     

    $ more aa.txt ip

    127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326 awk

    192.168.1.100 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326 統計

    192.168.1.100 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326 數據

    192.168.1.100 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326 sort

     

    1.要提取訪問量最大的IP,須要先從日誌中把IP段提取出來。 gif

     

    $ cat aa.txt |awk -F " " '{print $1}' 

    127.0.0.1 

    192.168.1.100 

    192.168.1.100 

    192.168.1.100 

     

    (PS,此處也能夠用cut命令實現。 

     

    $ cut -d " " -f 1 aa.txt 

    127.0.0.1 

    192.168.1.100 

    192.168.1.100 

    192.168.1.100) 

     

    2.對IP進行統計,看各IP出現過多少次 

     

    $ cat aa.txt |awk -F " " '{print $1}' |uniq -c 

          1 127.0.0.1 

          3 192.168.1.100 

     

    (PS:wc -l也能夠對行數統計,但統計的是總體的,全部行數。不會分類統計) 

     

    3.按IP出現次數從大到小排列 

     

    $ cat aa.txt |awk -F " " '{print $1}' |uniq -c |sort -r 

          3 192.168.1.100 

          1 127.0.0.1 

     

    4.再次提取出IP段 

     

    $ cat aa.txt |awk -F " " '{print $1}' |uniq -c |sort -r |awk '{print $2}' 

    192.168.1.100 

    127.0.0.1 

     

    5.選擇第一行 

     

    $ cat aa.txt |awk -F " " '{print $1}' |uniq -c |sort -r |awk '{print $2}' |head -1 

    192.168.1.100

相關文章
相關標籤/搜索