다음과 같은 텍스트 파일이 있습니다.
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