选择表中的最高值

时间:2014-04-30 18:24:07

标签: awk sed

包含3个列并且制表符分隔的文件。我想从第3列中选择最高值(在第1列的同名中)并打印为第4列。

输入文件

A       l       10
A       l       2
A       m       6
B       l       12
B       m       13
B       n       7
C       l       9
C       l       8
C       n       19

输出文件

A       l       10      10
A       l       2       10
A       m       6       10
B       l       12      13
B       m       13      13
B       n       7       13
C       l       9       19
C       l       8       19
C       n       19      19

请你建议使用awk或sed命令。感谢

1 个答案:

答案 0 :(得分:1)

您可以使用此awk

awk 'FNR==NR {arr[$1]=arr[$1]>$3?arr[$1]:$3;next} {print $0,arr[$1]}' OFS="\t" file{,}
A       l       10      10
A       l       2       10
A       m       6       10
B       l       12      13
B       m       13      13
B       n       7       13
C       l       9       19
C       l       8       19
C       n       19      19

这在file上传递两次。第一次找到最高,旁边打印。
file{,}使文件名加倍。您也可以使用file file代替。