包含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命令。感谢
答案 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
代替。