我试图编写一个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
我想比较第1和第2个字段(X A,X B或Y C)中共享相同值的所有记录,并选择第3个字段中具有最高数值的记录。
所以,我期待这个输出:
X A 10.00
X B 4.00
Y C 2.43
使用此代码段,我可以在第3个字段中选择具有最大值的记录(但它没有考虑以前的字段,并且它也没有输出它们):
awk 'BEGIN {max = 0} {if ($2>max) max=$2} END {print max}' input.txt
当前(不需要的)输出:
10.00
有什么想法吗?我可以用gawk。
提前多多感谢!
答案 0 :(得分:4)
你可以使用这个awk:
awk '{k=$1 OFS $2} $3>a[k]{a[k]=$3} END{for (i in a) print i, a[i]}' file
X A 10.00
X B 4.00
Y C 2.43