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
我正在尝试编写一个 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