个人博客,记录知识防止遗忘
awk 实现mysql的group by分组统计
awk 实现mysql的group by分组统计

awk 实现mysql的group by分组统计

内容大纲

1    背景:

mysql统计数据时经常会用到group by 分组功能,
但是很多时候一些零碎的日志数据并不会导入数据库,若此时需要用到类似group by分组的功能时,可以通过awk的数组来简单实现.

awk 数组的相关操作不再赘述, 直接上案例

2    案例:

统计出某小区各大门的人员出入情况

2.1    原始数据:

cat > ./aaaa.txt << EOF
A出口,男,已成年,有口罩
D出口,男,已成年,有口罩
A出口,女,未成年,无口罩
C出口,女,未成年,有口罩
B出口,男,已成年,无口罩
D出口,男,已成年,有口罩
B出口,男,未成年,无口罩
B出口,男,已成年,有口罩
A出口,女,未成年,无口罩
A出口,女,未成年,有口罩
C出口,女,已成年,无口罩
D出口,男,未成年,有口罩
C出口,男,已成年,有口罩
D出口,女,已成年,无口罩
EOF

2.2    具体命令及说明

可以看到, 上述数据相对较为整洁,用逗号即可分割成4个字段, 而后根据需要进行处理

cat aaaa.txt| awk -F ','  '{s[$1," ",$4] += 1}END{ for(i in s){ print i, s[i] } }'

对上述awk进行拆解, 便于理解

awk -F ','  '

{
    s[$1," ",$3] += 1
}

END{
    for(i in s)
        print i, s[i]  
    }'

命令说明
image.png
执行结果如下:
image.png
此外, 可以根据需要,更换不同的字段分组统计image.png

至此, 简单的group by 已实现

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注