Bash

基於欄位的 awk sum csv 列

  • March 11, 2015

我有 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

假設輸出的順序不是必需的……

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

(為了更好的易讀性進行了編輯和重組。)

引用自:https://unix.stackexchange.com/questions/189615