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