awk - 다중 열 파일의 추가 및 분할

awk - 다중 열 파일의 추가 및 분할

다음과 같은 입력 파일이 있습니다.

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$2r[i]$3R[i]∑($2)∑($3)

관련 정보