フィールドに基づく 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,BHeader4と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

(読みやすくするために編集して再構成しました。)

おすすめ記事