如何从数组中找到最小值

时间:2019-07-10 09:36:26

标签: arrays linux multiple-columns minimum

我有一个这样的以制表符分隔的数组:

rs1000 0.09 red
rs1000 0.01 blue
rs2000 0.07 yellow
rs2000 0.08 black

并且我正在尝试在第一列的rs的第二列中获取最小值。

我希望得到这样的结果:

rs1000 0.01 blue
rs2000 0.07 Yellow

我的文件太大,无法使用Excel,因此我需要一个Linux脚本来实现我的目标。 你能建议我一种方法吗?

2 个答案:

答案 0 :(得分:0)

您可以使用两次排序:

sort -nk2,2 filename | sort -su -k1,1

第一个调用按第二列对文件名进行排序,第二个调用从列1中选择唯一值。GNU排序为每个唯一值选择第一行,但是我隐约记得其他实现方式有所不同。

答案 1 :(得分:-1)

最快但不是最短的时间是使用awk

awk '(!($1 in m))||($2<m[$1]){m[$1]=$2; r[$1]=$0}END { for(i in r) print r[i] }' file

具有sort和awk的posix兼容版本为:

$ sort -k1,1 -k2,2n file | awk '(f!=$1);{f=$1}'