csv 파일을 키 열과 병합

csv 파일을 키 열과 병합

csv 파일을 병합하려면 쉘 스크립트를 작성해야 합니다. 두 파일 모두 동일한 열을 가지며 "키"로 지정된 고정된 수의 열이 있습니다. 키가 동일하면 키가 아닌 열을 추가하여 병합하고 싶습니다.

예를 들어:

A.csv

k1,k2,k3,v1,v2      => This is the header row
A,B,C,4,5
A,B,D,3,4

B.csv

k1,k2,k3,v1,v2      => This is the header row
A,B,A,2,3
A,B,C,1,4
A,B,E,4,5

Merged.csv:

k1,k2,k3,v1,v2      => This is the header row
A,B,A,2,3
A,B,C,5,9           => A,B,C is present in both the csv, so value cols are added 
A,B,D,3,4
A,B,E,4,5

답변1

밀러 사용(http://johnkerl.org/miller/doc/index.html) 그리고

mlr --csv stats1 -a sum -g k1,k2,k3 -f v1,v2 input_a.csv input_b.csv

당신은 할 것

k1,k2,k3,v1_sum,v2_sum
A,B,C,5,9
A,B,D,3,4
A,B,A,2,3
A,B,E,4,5

답변2

이상한:

BEGIN{FS=OFS=","}

# print head row
NR==1;

# skip blank, sum column 4, 5 into a, b
FNR!=1 && NF!=0 {k=($1","$2","$3); a[k]+=$4; b[k]+=$5 }

# print result
END { for(k in a) print k, a[k], b[k] }

관련 정보