awk 雜湊陣列實現group by 功能
阿新 • • 發佈:2019-02-18
有時候我們統計比較大的檔案中的資料的時候需要根據檔案的某個欄位進行彙總,也就是資料庫中的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]);
}
}