如何计算apache服务器日志文件中唯一响应代码的数量?

问题描述 投票:-1回答:1

我刚开始进行系统管理员工作。给了我一个包含一些响应代码的日志文件(实际上它们太多了)。我需要列出使用的代码列表,例如400、200、304、404。然后,我需要显示每个响应代码重复多少次。对于最后一项任务,我做到了:

less file name | grep -c "404"

但是我仍然需要列出这些响应代码。

这是日志文件的示例:

10.229.120.3|-|[12/Apr/2020:23:58:40 -0500]|/keepalive.html||200|10|1143|HTTP/1.1|GET|TLSv1.2|AES256-GCM-SHA384
10.229.120.4|-|[12/Apr/2020:23:58:53 -0500]|/keepalive.html||200|10|2367|HTTP/1.1|GET|TLSv1.2|AES256-GCM-SHA384
10.229.120.3|-|[12/Apr/2020:23:58:55 -0500]|/keepalive.html||200|10|1194|HTTP/1.1|GET|TLSv1.2|AES256-GCM-SHA384
10.229.120.4|-|[12/Apr/2020:23:59:08 -0500]|/keepalive.html||200|10|2212|HTTP/1.1|GET|TLSv1.2|AES256-GCM-SHA384
10.229.120.3|-|[12/Apr/2020:23:59:10 -0500]|/keepalive.html||200|10|1780|HTTP/1.1|GET|TLSv1.2|AES256-GCM-SHA384
10.229.120.4|-|[12/Apr/2020:23:59:23 -0500]|/keepalive.html||200|10|1268|HTTP/1.1|GET|TLSv1.2|AES256-GCM-SHA384
10.229.120.3|-|[12/Apr/2020:23:59:25 -0500]|/keepalive.html||200|10|1160|HTTP/1.1|GET|TLSv1.2|AES256-GCM-SHA384
10.229.120.4|-|[12/Apr/2020:23:59:38 -0500]|/keepalive.html||200|10|1206|HTTP/1.1|GET|TLSv1.2|AES256-GCM-SHA384
10.229.120.3|-|[12/Apr/2020:23:59:40 -0500]|/keepalive.html||200|10|1138|HTTP/1.1|GET|TLSv1.2|AES256-GCM-SHA384
10.229.120.4|-|[12/Apr/2020:23:59:53 -0500]|/keepalive.html||200|10|1304|HTTP/1.1|GET|TLSv1.2|AES256-GCM-SHA384
10.229.120.3|-|[12/Apr/2020:23:59:55 -0500]|/keepalive.html||200|10|2476|HTTP/1.1|GET|TLSv1.2|AES256-GCM-SHA384
linux apache logfile http-response-codes
1个回答
1
投票

使用awk

awk -F'|' '{ a[$6]++} END{ for (i in a) print i "\t" a[i] }' logfile | sort -n

这将计算第六个字段的出现次数,并为每个数组元素打印状态代码和出现次数。然后根据状态代码对输出进行数字排序。

如果希望输出按出现的顺序以sort -nrk2反向排列,请使用r。>

© www.soinside.com 2019 - 2024. All rights reserved.