使用Bash从文本文件中提取总和最高的列名
最简方法获取求和最高的列名
嘿,给你两个超简洁的方案,挑你顺手的用就行:
方案1:用awk命令(一行搞定,适合熟悉命令行的同学)
直接在终端里运行这条命令,把your_file.txt换成你的实际文件名即可:
NR==1{for(i=1;i<=NF;i++)col[i]=$i} NR>1{for(i=2;i<=NF;i++)sum[i]+=$i} END{max=sum[2];maxcol=col[2];for(i=3;i<=NF;i++)if(sum[i]>max){max=sum[i];maxcol=col[i]} print maxcol}
逻辑拆解:
- 处理第一行(表头):把每个列名存储到
col数组中 - 处理后续数据行:从第二列开始(第一列是行标识,无需求和),累加每一列的数值到
sum数组 - 最终遍历:找出
sum数组里的最大值,对应输出它的列名
用你的测试文件运行,输出就是c,完全匹配需求~
方案2:用Python(代码简洁,适合Python用户)
如果更习惯用Python,几行代码就能解决:
with open('your_file.txt', 'r') as f: lines = f.readlines() # 提取表头的列名 cols = lines[0].split() # 计算每一列(跳过第一列行标识)的数值总和 sums = [sum(map(int, line.split()[i])) for i in range(1, len(cols))] # 找到最大总和对应的列名 max_col = cols[1 + sums.index(max(sums))] print(max_col)
逻辑说明:
- 先读取文件所有内容,提取第一行的列名列表
- 遍历数据行,逐个计算每一列的数值总和
- 通过最大值的索引,匹配到对应的列名并输出
内容的提问来源于stack exchange,提问作者Laura Guerrero
相关产品推荐
相关产品推荐

