1. 程式人生 > >awk 雜湊陣列實現group by 功能

awk 雜湊陣列實現group by 功能

有時候我們統計比較大的檔案中的資料的時候需要根據檔案的某個欄位進行彙總,也就是資料庫中的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]);

}

}