다음과 같은 입력 파일이 있습니다.
ABC 1 2
DEF 3 4
ABC 4 8
DEF 7 1
예상되는 출력은 첫 번째 열을 그룹화하고 열 2와 3의 값을 추가하는 것입니다. 그런 다음 2열과 3열의 값을 나누어 그 결과를 4열에 저장합니다.
ABC 5 10 0.5
DEF 10 5 2
귀하의 조언에 크게 감사하겠습니다.
답변1
awk '{r[$1]+=$2;R[$1]+=$3}END{for(i in r){print i" "r[i]" "R[i]" "r[i]/R[i]}}'
읽다:
- 각 행에 대해 첫 번째 열을
$1
의 인덱스로 저장하고 열의r
누적(+=
) 합계를$2
의 값으로 저장r
하고$3
의 열에 대해서도 동일한 작업을 수행합니다R
. - 모든 행을 읽었으면(
END
) 합계 ( ), 합계 ( ), 마지막으로$1
각 그룹의 비율을 인쇄합니다 .i
$2
r[i]
$3
R[i]
∑($2)
∑($3)