awk数组:选择数组元素后打印字段

时间:2013-12-04 17:08:52

标签: awk

我使用awk命令从虚拟文件中提取最大值。

cat dummy_file

    Cat Felix 3
    Cat Garfield 2
    Cat Tom 1
    Dog Snoopy 5
    Dog Spike 4


awk '{max[$1] =!($1 in max) ? $3 : ($3 > max[$1]) ? $3 : max[$1]} \  
    END {for (i in max) print i,max[i]}' dummy_file

    Cat 3
    Dog 5

除了提取的最大值和数组元素之外,我还需要相应的$2。对于像这样的输出:

    Cat Felix 3
    Dog Snoopy 5

我的问题是 - 如何在选择数组元素后打印想要的字段?

1 个答案:

答案 0 :(得分:1)

您可以尝试:

{
    if ($1 in max) {
        if ($3> max[$1]) {
            max[$1]=$3
            type[$1]=$2
        }
    } else {
        max[$1] = $3
        type[$1]=$2
    }
}
END {
    for (i in max) print i,type[i],max[i]
}