簡體   English   中英

awk查找數組的最小值和最大值

[英]awk to find min and max of an array

我有一個生成不同ID並計數的文件,如下所示

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數組腳本以獲取最大值和最小值?

謝謝!

  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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM