awk:保留最高值的记录,比较共享其他字段的记录

awk: keep records with the highest value, comparing those that share other fields

我正在尝试编写一个 awk 脚本来保留给定字段中具有最高值的记录,但只比较共享其他两个字段的记录。

我最好举个例子 -- 这是 input.txt:

X A 10.00
X A 1.50
X B 0.01
X B 4.00
Y C 1.00
Y C 2.43

我想比较第一个和第二个字段(X A、X B 或 Y C)中具有相同值的所有记录,并选择在第三个字段中具有最高数值的记录。

所以,我希望这个输出:

X A 10.00
X B 4.00
Y C 2.43

通过这个片段,我可以在第三个字段中选择最大值的记录(但它没有考虑前面的字段,也没有输出它们):

awk 'BEGIN {max = 0} {if (>max) max=} END {print max}' input.txt

当前(不需要的)输出:

10.00

有什么想法吗?我可以使用 gawk。

非常感谢!

你可以使用这个 awk:

awk '{k= OFS } >a[k]{a[k]=} END{for (i in a) print i, a[i]}' file
X A 10.00
X B 4.00
Y C 2.43