首页 > 解决方案 > BASH 从最高列总和 txt 文件中提取列名

问题描述

我有一个包含以下内容的 .txt 文件:

reference a b c

SR48 250 1250 1256

SR49 310 1651 1684

我想找到在对所有列值求和时获得最高值的列的列名的最短方法。在这种情况下,它将是 c。

先感谢您!

标签: bashawk

解决方案


您可以按照以下方式做一些事情:

$ awk 'NR==1{for(i=2;i<=NF;i++)fields[i]=$i; cnt=NF; next}
     {for(i=2;i<=cnt;i++) sums[fields[i]]+=$i}
     END{for (e in sums) if (sums[e]>max){max=sums[e]; idx=e}
     print idx, max}
' file

印刷:

c 2940

推荐阅读