使用linux,我尝试根据第1列和第2列对数据进行排序,并仅打印第3列中具有最高值的行。我的数据看起来像
A 1 75.0
A 1 99.0
A 2 68.0
B 1 66.0
B 1 50.0
B 2 75.0
B 2 80.0
“键”位于第1列和第2列,而且我想只打印第3列中具有最高值的行,当第1列和第2列的数据相等时,就像这样
A 1 99.0
A 2 68.0
B 1 66.0
B 2 80.0
我尝试使用sort sort -k1,1 -k2,2
来做,但是如何更改命令,它只打印第3列中值最高的行?
答案 0 :(得分:1)
您可以只使用一个Awk
解决方案,而不是在sort
awk 'unique[$1FS$2]<$3{unique[$1FS$2]=$3; next}END{for (i in unique) print i,unique[i]}' file
我们的想法是创建哈希表,其中键为前两列,表名为unique
,键为$1FS$2
,然后我们将每个唯一键的最大值添加到表中打印完所有谎言后,我们在END
子句中打印哈希表。