Awk 根据字段求和 csv 列

Awk 根据字段求和 csv 列

我有 N 个文件,如下所示:

文件1.txt

Header1,Header2,Header3,Header4,Header5
A,B,RANDOM,1,2
C,D,RANDOM,3,4

文件N.txt

Header1,Header2,Header3,Header4,Header5
A,B,RANDOM,1,2
C,D,RANDOM,3,4

它们都有相同的标题。我想根据 Header1 和 Header2 对 Header4 和 Header5 进行求和。因此,所有具有字段的项目A,B都应将 Header4、Header5 相加。

打印类似的东西

A,B,2,4
C,D,6,8

答案1

假设输出的顺序没有要求......

awk '
  BEGIN { FS=OFS=SUBSEP="," }
  { s4[$1,$2]+=$4 ; s5[$1,$2]+=$5 }
  END { for (k in s4) print k,s4[k],s5[k] }
' file1 ... fileN

(经过编辑和重组以提高易读性。)

相关内容