可以使用awk命令实现:

假设文件名为data.txt,命令如下:

awk '{a[$3]+=$4;b[$3]+=$5;c[$3]+=$6;d[$3]+=$7;e[$3]+=$8;f[$3]+=$9} END {for(i in a) print i,a[i],b[i],c[i],d[i],e[i],f[i]}' data.txt

解释:

  • {a[$3]+=$4;b[$3]+=$5;c[$3]+=$6;d[$3]+=$7;e[$3]+=$8;f[$3]+=$9}:对于每一行,将第三列作为数组a、b、c、d、e、f的下标,第四至九列的值分别加到对应的数组元素中。
  • END {for(i in a) print i,a[i],b[i],c[i],d[i],e[i],f[i]}:在处理完所有行后,遍历数组a,输出每个下标(i)及其对应的数组元素(a[i]、b[i]、c[i]、d[i]、e[i]、f[i]),即第三列相同的行的第四至九列求和结果。

注意:

  • 如果第三列的内容不是唯一的,输出结果可能会包含多行,每行对应的第三列内容相同。
  • 如果需要保留原文件的格式,可以将输出结果重定向到一个新文件中,例如:`awk '{a[$3]+=$4;b[$3]+=$5;c[$3]+=$6;d[$3]+=$7;e[$3]+=$8;f[$3]+=$9} END {for(i in a) print i,a[i],b[i],c[i],d[i],e[i],f[i]}' data.txt > result.txt
在LINUX的一个txt文件中想要根据第三列的内容合并同类项将第4、5、6、7、8、9列内容分别求和

原文地址: https://www.cveoy.top/t/topic/gS9M 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录