我的问题如下:我有一个文件,第一列中有组号,第二列中有不同的值:
1 34
1 43
1 6
2 12
2 9
3 57
3 19
3 78
我需要的是为每个组提取最小值和最大值:
1 6,43
2 9,12
3 19,78
我试图用awk做但没有管理。我现在正在做的是将每个组分成不同的文件,并分别找到最小值和最大值。将使用awk感谢任何关于如何在一个文件中执行此操作的建议。谢谢。
答案 0 :(得分:1)
# If we've seen this group before, reassign min and max if necessary:
$1 in min {
min[$1] = ($2 < min[$1]) ? $2 : min[$1]
max[$1] = ($2 > max[$1]) ? $2 : max[$1]
next
}
# First time we've seen this group. Initialize min and max:
{ min[$1] = max[$1] = $2 }
# Output the resulting min and max values. (Order will be
# somewhat random):
END {
for (i in min) {
print i " " min[i] "," max[i]
}
}
如果您关心订单,可以将结果通过管道排序:
$ awk -f mm.awk file | sort -n
1 6,43
2 9,12
3 19,78