在LINUX的一个txt文件中想要根据第三列的内容将第4、5、6、7、8、9列内容分别求和
可以使用awk命令实现:
awk '{sum4[$3]+=$4; sum5[$3]+=$5; sum6[$3]+=$6; sum7[$3]+=$7; sum8[$3]+=$8; sum9[$3]+=$9} END {for (i in sum4) print i, sum4[i], sum5[i], sum6[i], sum7[i], sum8[i], sum9[i]}' file.txt
其中,$3表示第三列,$4、$5、$6、$7、$8、$9分别表示第4、5、6、7、8、9列的内容。使用数组sum4、sum5、sum6、sum7、sum8、sum9分别保存每个不同的第三列的内容对应的第4、5、6、7、8、9列的总和。最后通过for循环遍历数组,输出结果。
需要注意的是,如果第三列的内容不唯一,那么上面的命令将会输出每个不同的第三列的内容对应的总和。如果只需要输出第三列的内容和对应的总和,可以将print语句修改为print i, sum4[i]+0, sum5[i]+0, sum6[i]+0, sum7[i]+0, sum8[i]+0, sum9[i]+0,其中的+0是为了避免出现空白行
原文地址: https://www.cveoy.top/t/topic/gS97 著作权归作者所有。请勿转载和采集!