awk 哈希数组实现group by 功能

2/13/2017来源:经验技巧人气:2502

有时候我们统计比较大的文件中的数据的时候需要根据文件的某个字段进行汇总,也就是数据库中的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]);

}

}