1개 열에서 고유한 값을 가져오고 다음 2개 열을 합산합니다. [닫기]

1개 열에서 고유한 값을 가져오고 다음 2개 열을 합산합니다. [닫기]

다음과 같은 텍스트 파일이 있습니다.

A 500 100 ABC
B 200 100 BBB
B 200 100 ACC
D 150 235 CDD
A 500 100 RER
C 210 653 DDD
C 210 653 DWR
D 150 653 DDW
D 150 653 DER

내가 달성하려는 것은 첫 번째 고유 이름을 필터링하고 그 뒤에 있는 모든 값의 합계(열 2와 열 3의 합계)를 얻는 것입니다. 예를 들면 다음과 같습니다.

A 1000 200
B 400 200

다음 awk 라인을 사용하여 처음 2개를 작업했습니다.

awk '{a[$1]+=$2} END {for(i in a) print i,a[i] }' file

결과 :

A 1000
B 400

나는 믹스에 세 번째 열을 추가해야 한다고 주장합니다. 열 3을 추가하는 방법에 대한 팁이 있는 사람이 있나요?

답변1

다음 테스트 버전을 사용해 보세요.

awk '{ colone[$1]+=$2; coltwo[$1]+=$3; } END { for (i in colone) { print i " " colone[i] " " coltwo[i]; }}' file

연관 배열을 사용합니다. 유명한 튜토리얼을 참조하세요.Awk - 튜토리얼 및 소개 - Bruce Barnett 작성

테스트는 다음과 같습니다.

awk '{ colone[$1]+=$2; coltwo[$1]+=$3; } END { for (i in colone) { print i " " colone[i] " " coltwo[i]; }}' file
A 1000 200 
B 400 200
C 420 1306
D 450 1541

관련 정보