다른 필드의 변수를 기반으로 한 필드의 값 합계를 구합니다.

다른 필드의 변수를 기반으로 한 필드의 값 합계를 구합니다.

한 필드와 다른 필드의 각 변수 값의 합을 알고 싶습니다. 예를 들어, 다음 입력의 경우 첫 번째 열의 각 값에 대해 세 번째 열의 값 합계를 알고 싶습니다.

a x 3
b y 4
a y 2
b x 5

출력은 다음과 같아야 합니다.

a 5
b 9

내 데이터가 tsv포맷되었습니다. 나는 아마도 다음과 같은 것을 원할 것입니다.

awk -F'\t' 'BEGIN{SUM=0}{ SUM+=$3 }END{print SUM}' 

그러나 열 1의 모든 값에 대해. 내가 찾은관련 질문그러나 나는 awk 스크립트를 처음 접했기 때문에 주어진 awk 스크립트를 내 목적에 맞게 수정할 수 없습니다.

datamash가 설치되어 있지 않으므로 awk와 for 루프가 있는 솔루션이 필요합니다.

감사해요

답변1

$1로 인덱스된 배열을 만듭니다.

awk -F'\t' '{ SUM[$1] += $3 } END { for (j in SUM) print j, SUM[j] }'

관련 정보