首页/系统/Linux 运维命令速查/awk 数组分组统计
文本处理77 条

awk 数组分组统计

awk 的关联数组是命令行统计的发动机:cnt[$1]++ 计数、sum[$2]+=$3 求和,END 块里遍历输出,配合 sort 得到排行榜。

Linux 运维命令速查系统更新于 2026-10-12
用途按字段分组计数/求和
语法awk '{cnt[$1]++} END{for(k in cnt) print cnt[k], k}' 文件
所属GNU awk (gawk)

常用示例

常用示例
awk '{cnt[$1]++} END{for(k in cnt) print cnt[k], k}' access.log | sort -rn | head
awk -F, 'NR>1 {sum[$2]+=$3} END{for(k in sum) printf "%s %.2f\n", k, sum[k]}' sales.csv
awk '{cnt[substr($4,2,3)]++} END{for(c in cnt) print c, cnt[c]}' access.log   # 按状态码

易错点

  • for (k in cnt) 的遍历顺序是随机的,排行榜必须自己接 sort(别指望 awk 排)
  • 大文件里高基数字段(如整行 URL)会让数组膨胀吃内存,先 cut/规范化再统计

数据来源与参考

  • man 1 awk(GNU gawk 手册)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌