内容大纲
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]
}'
命令说明
执行结果如下:
此外, 可以根据需要,更换不同的字段分组统计
至此, 简单的group by 已实现