Awk - Summarize Status Codes
Examples - sum_codes.awk
file:awk/sum_codes.awk #!/usr/bin/awk BEGIN { rcnt = 0; sum = 0; } { if($(NF-1) ~ /[0-9]{3}$/) { # 通常の例 ステータスコード件数を足しこみます codes[$(NF-1)]++; } else if($(NF-2) ~ /[0-9]{3}$/) { # もし上記にあてはまらない場合 codes[$(NF-2)]++; } else { codes["NG"]++; # もしNGのレコードが存在する場合は以下、列数と行全体を確認し # 抽出対象を調整します。例: $7等直接参照 # print "NG: NF: ", NF, $0; } # 処理した件数を記録 rcnt++; } END { # ステータスコード一覧と各件数をレポートします for(key in codes) { print key, codes[key]; sum += codes[key]; } print "Processed Count: ", rcnt, " sum: ", sum; }
$ awk -f awk/sum_codes.awk /var/somelocation/kshell-access_log | sort -nr -k 2 200 4127 404 387 408 370 400 35 206 16 503 15 304 3 204 2 201 2 Processed Count: 4957 sum: 4957