有时候我们统计比较大的文件中的数据的时候需要根据文件的某个字段进行汇总,也就是数据库中的group by 功能,但shell命令
处理文件是没有类似数据库的group by 功能的,这时我们可以通过awk哈希数组实现文件中的group by功能,示例如下:
待处理的文件格式如下: employ.txt
zhangsan 120
lisi 200
wangwu 245
zhaoliu 287
xidada 345
lisi 367
zhangsan 456
现在想要将相同名字后面的数字汇总起来
cat employ.txt|awk '{
tol[$1]+=$2;
}END{
for( a in tol){
PRintf("%s,%d/n",a,tol[a]);
}
}'
实现类似数据库having功能,将大于200的数字汇总按名字汇总:
cat employ.txt|awk '{
tol[$1]+=$2;
}'END{
for( a in tol){
if(a>200)
printf("%s,%d/n",a,tol[a]);
}
}
新闻热点
疑难解答