awk '$4>="[31/Jul/2021:09:43:00" && $4<="[31/Jul/2021:09:44:00" {a[$9]++}END{for(i in a)print a[i],i}' access.log
代码如上,$4表示access.log以空格为分隔符
'$4>="[31/Jul/2021:09:43:00" && $4<="[31/Jul/2021:09:44:00 #表示时间
{a[$9]++}表示第九列状态码累加,如a[500]++,a[400]++
最终会得一个数组
a[301,500,400,200,…]=[30,40,25,60]的数组
END{for(i in a)print a[i],i}表示结束后打印遍历数组,其中数组下标是状态码a[200]中下标200就是状态码,而统计的状态码数量就是数组元素值a[200]=20
[root@VM_0_7_centos logs]# awk '$4>="[31/Jul/2021:09:43:00" && $4<="[31/Jul/2021:09:44:00" {a[$9]++}END{for(i in a)print a[i],i}' access.log
3 301
3 404
20 200
[root@VM_0_7_centos logs]#