awk统计日志中各IP访问非200状态码的次数

日志示例数据:

  1. 111.202.100.141 - - [2019-11-07T03:11:02+08:00] "GET /robots.txt HTTP/1.1" 301 169

统计非200状态码的IP,并取次数最多的前10个IP。

  1. # 法一
    awk '$8!=200{arr[$1]++}END{for(i in arr){print arr[i],i}}' access.log | sort -k1nr | head -n 10

    # 法二:
    awk '
    $8!=200{arr[$1]++}
    END{
    PROCINFO["sorted_in"]="@val_num_desc";
    for(i in arr){
    if(cnt++==10){exit}
    print arr[i],i
    }
    }' access.log