我的问题如下:我有一个文件,在第一列中有组号,在第二列中有不同的值:
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 在一个文件中执行此操作的任何建议,我们将不胜感激。谢谢。
# 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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句