awk 统计常用

1. 目的

主要以实例方式讲解, awk统计

  • file1
级别,地区,企业级别,企业数量
1,北京,A,1
1,上海,B,2
0,广东,C,3
0,河北,D,4
2,南京,E,5
0,河北,F,6
1,北京,G,7
1,上海,H,8
2,南京,I,9
0,云南,J,10
2,石家庄,A,10
3,秦皇岛,B,20
2,石家庄,C,30
3,邢台,D,40
0,广东,E,50
1,北京,F,60
2,石家庄,G,70
3,邯郸,H,80
3,新乡,I,90
0,广东,J,100
0,广东,J,1000
  • file2
地区,人口
北京,1000
上海,800
广东,600
河北,2000
南京,400
云南,1300
石家庄,200
秦皇岛,100
邢台,100
邯郸,120
新乡,150
九江,50
雄县,10
廊坊,20

2. 单表:单文件统计

实例模板, 书写风格, 如下:
# SQL实现: (如果有等效的SQL)
SQL代码
# awk实现
awk代码
# AWK结果:
结果展示
  • 地区数, 地区人口总数 : (file2第二列求和)
# SQL: 
select count(1), sum(`人口`)  from file2 

# AWK:
awk -F,   '{a+=1;s+=$2} END{print a,s}'   file2
# 结果: 
15 6850
  • 不同城市级别的企业数量, 倒序排列
# SQL: 
select `城市级别`, sum(`企业数量`) as `total` from file1 group by `城市级别` order by total desc

# AWK:
awk -F,   '{a[$1]+=$4} END {for (i in a) print i, a[i]}'    file1 | sort -k2nr 
# 结果: 
0 1173
3 230
2 124
1 78
  • 按城市+企业级别分组, 求各组企业数量, 倒序Top5

# SQL: 
select `城市级别`, `企业级别`, sum(`企业数量`) as `total` 
from file1 group by `城市级别`,`企业级别` 
order by total desc

# AWK:
awk -F, '{a[$1" "$3]+=$4} END {for (i in a) print i, a[i]}' file1 | sort -k3nr | head -5
# 结果: 
0,J 1110
3,I 90
3,H 80
2,G 70
1,F 60
  • 筛选出企业级别ABCD的企业数量,并分组求和, 并倒序
# SQL:
select `企业级别`, sum(`企业数量`) as total from file1
where `企业级别` in ('A','B','C','D')
group by `企业级别`  order by total desc

# AWK:
awk -F,  'BEGIN{a["A"]=0;a["B"]=0;a["C"]=0;a["D"]=0;}{if ($3 in a) {a[$3]+=$4;}} END {for(i in a) print i,a[i]}' file1  | sort -k2rn 
# 结果:
D 44
C 33
B 22
A 11
  • 待续...
  • 筛选
# SQL:

# AWK:
# 结果:
  • 筛选
# SQL:

# AWK:
# 结果:
  • 筛选
# SQL:

# AWK:
# 结果:

3. 多表关联

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 34,900评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,727评论 19 139
  • 自从看过《营上阿妹》这部贵州本土微电影后,织金县龙场镇营上古寨就引起我的关注,正值油菜花香时,往此一游。 古寨座落...
    自由自游阅读 4,307评论 0 0
  • 读的什么书:《拆掉思维的墙》 阅读有效时间:30分钟 阅读中遇到了什么困难:拖延不想读书,总是分心,被其他的事情所...
    小雷_d54f阅读 173评论 0 0
  • 游戏核心循环: 通过使用swipe或者button对角色进行操作在随机生成并且难度线性增加的地牢中移动,移动方式只...
    JackLinMaker阅读 1,095评论 0 0

友情链接更多精彩内容