2016-02-24 33 views
0

我有文件生成不同的ID和計數低於AWK找到最小和最大的數組

prod1 13 
prod4 14 
prod5 14 
prod3 11 
prod2 8 
prod1 9 
prod3 16 
prod5 11 
prod2 9 
prod4 11 
prod1 16 
prod5 8 
prod3 16 
prod2 3 
prod4 1 
prod3 3 
prod2 1 
prod1 1 
prod5 3 
prod1 2 
prod4 78 

我試圖找到一個選項,以獲取最大和最小的每個產品,如圖所示。

運行以下awk腳本給我的數量和總和,但我也需要跟蹤每個產品的最小值和最大值。

awk '{ Prod[$1]++; sum[$1]+=$2 } END{ for (var in Prod) print var, "count", Prod[var], "and sum", sum[var]}' 

prod1 count 5 and sum 41 
prod2 count 4 and sum 21 
prod3 count 4 and sum 46 
prod4 count 4 and sum 104 
prod5 count 4 and sum 36 

有沒有辦法修改awk數組腳本來獲取最大值和最小值?

謝謝!

回答

1
awk '{Prod[$1]++ 
    sum[$1]+=$2 
    min[$1]=Prod[$1]==1||min[$1]>$2?$2:min[$1] 
    max[$1]=max[$1]<$2?$2:max[$1]} 
    END{ for (var in Prod) printf "%s count %d and sum %d max %d min %d\n", var,Prod[var],sum[var],max[var],min[var]}' file 

prod4 count 4 and sum 104 max 78 min 1 
prod5 count 4 and sum 36 max 14 min 3 
prod1 count 5 and sum 41 max 16 min 1 
prod2 count 4 and sum 21 max 9 min 1 
prod3 count 4 and sum 46 max 16 min 3 
相關問題