有時候我們統計比較大的文件中的數據的時候需要根據文件的某個字段進行匯總,也就是數據庫中的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]);
}
}
新聞熱點
疑難解答