bash script2023. 10. 12. 20:19

 

반달가면 이글루에서 백업 - http://bahndal.egloos.com/634800

awk를 이용해서 파일에 저장된 값들의 평균을 계산하는 방법이다. 우선 data.txt 파일에 아래와 같은 값이 저장되어 있다고 가정하자.

# data.txt 내용 확인
cat data.txt
john 12.35
jane -34.5
thomas 3.9

위와 같은 내용으로 저장되어 있을 때, 평균을 계산하려면 아래와 같이 가능하다.

awk '{ sum += $2; cnt++ } END { print sum/cnt }' data.txt
-6.08333

data.txt의 두번째 항목($2)을 더해서 변수 sum에 저장하고, 자료값의 수를 세기 위해 변수 cnt도 1씩 증가. 합산 작업이 끝나면(END) 합(sum)을 자료값의 수(cnd)로 나누면 평균이 된다.  

만약 파일 안에 유효하지 않은 행이 포함되어 있을 경우에는 grep을 조합하면 되겠다. data2.txt 파일이 아래와 같은 경우를 보자.

# data2.txt 내용 확인
cat data2.txt
# this is a test data file
john 12.35
jane -34.5
thomas 3.9

data2.txt의 첫번째 행이 "#" 기호로 시작하는 주석(comment)이므로 grep을 이용해서 제외하고 평균을 계산할 수 있다.

cat data2.txt | grep -v "^#" | awk '{ sum += $2; cnt++ } END { print sum/cnt }'
-6.08333

728x90
Posted by 반달가면