我有一个这样的以制表符分隔的数组:
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脚本来实现我的目标。 你能建议我一种方法吗?
答案 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}'