Awk를 사용하여 동적 행에 대한 수학 계산 수행

Awk를 사용하여 동적 행에 대한 수학 계산 수행

아래와 같은 값을 가진 샘플 파일이 있는데 [] 안에 있는 부분의 가중 평균을 계산하고 싶습니다.

6708.1717,07/15/2015,[6708:2],[6708.1609:3],[6708.5:5]
3352.130000000,07/15/2015,[3352:4]
6708.1717,07/15/2015,[6708:2],[6708.1609:2],[6708.5:5]

첫 번째 줄의 샘플 출력은 다음과 같아야 합니다.

6708.1717,07/15/2015, [(6708 x 2 + 6708.1609 x 3 + 6708.5 x 5)/2+3+5]

[]가 있는 열의 개수는 행마다 다릅니다. 계산하는
방법이 있나요awk

답변1

난 쓸수있다

awk -F, -v OFS=, '{
  n=0
  sum=0
  for (i=3; i<=NF; i++) {
    split( substr( $i, 2, length($i)-2 ), a, /:/)
    sum += a[1]*a[2]
    n += a[2]
  }
  print $1, $2, sum/n
}' file

생산하다

6708.1717,07/15/2015,6708.3
3352.130000000,07/15/2015,3352
6708.1717,07/15/2015,6708.31

관련 정보