我有一个这样的txt文件
32 1
32 2
32 3
32 4
32 5
17 8
17 9
17 10
17 11
14 33
14 34
14 35
我想要得到像这个这样的txt文件!因此,我们从字段二中取出字段一中的值的最小值和最大值,并打印它们。
32 1 5
17 8 11
14 33 35
任何想法 ?谢谢 。
答案1
答案2
使用awk
:
awk 'min[$1] == "" || $2 < min[$1] { min[$1] = $2 }
max[$1] == "" || $2 > max[$1] { max[$1] = $2 }
END { for (i in min) print i, min[i], max[i] }' file |
sort -rn
max
这会记住与和关联数组中第一列关联的最大值和最小值min
。处理完所有数据后,将打印这些值。
最后sort -rn
的确保输出按降序排序。
答案3
按照您的输入排序:
$ awk '$1 != p{printf "%s%s",max,$0; p=$1} {max=OFS $2 ORS} END{printf "%s", max}' file
32 1 5
17 8 11
14 33 35