한 필드와 다른 필드의 각 변수 값의 합을 알고 싶습니다. 예를 들어, 다음 입력의 경우 첫 번째 열의 각 값에 대해 세 번째 열의 값 합계를 알고 싶습니다.
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] }'