리눅스2023. 9. 26. 08:51

 

반달가면 이글루에서 백업 - http://bahndal.egloos.com/657894 (2022.5.24)

리눅스에서 텍스트 파일에 저장된 수자들로부터 합, 평균, 표준편차 등을 계산하고 싶을 때 datamash를 활용할 수 있다. 설치는 터미널창에서 아래와 같이 진행한다. 데비안/우분투 기준이다.

# S/W 저장소 정보 갱신
sudo apt-get update

# datamash 설치
sudo apt-get install datamash

예를 들어 과일의 개수를 저장한 fruits.txt 파일의 내용이 아래와 같다고 가정하자.

apple 10
banana 24
grapes 17

첫번째 항목은 명칭이고 두번째 항목은 개수이다. 전체 과일의 개수는 아래와 같이 계산할 수 있다.

# 두번째 항목의 합
cat fruits.txt | datamash sum 2

"sum 2"라고 지정하면 두번째 항목의 합(sum)을 구하라는 뜻이다. 평균은 "mean", 표준편차는 "sstdev"를 사용한다.

# 두번째 항목의 평균
cat fruits.txt | datamash mean 2

# 두번째 항목의 표준편차
cat fruits.txt | datamash sstdev 2

합과 평균을 같이 표시하고 싶다면 아래와 같이 할 수 있다.

cat fruits.txt | datamash sum 2 mean 2

항목 구분자는 기본적으로 탭(tab)인데, 다른 구분자를 사용했을 경우 -t 옵션을 이용해서 지정할 수도 있다.

만약 fruits.txt 파일의 항목 구분자가 탭이 아니라 공백(space)이라면, 아래와 같이 해야 할 것이다.

# 항목 구분자가 탭이 아니라 공백인 경우
cat fruits.txt | datamash -t ' ' sum 2

첫번째 행이 항목 명칭인 경우가 있을 수 있다. 예를 들어 fruits.txt 파일의 내용이 아래와 같은 경우다.

name qty
apple 10
banana 24
grapes 17

이 경우에는 계산을 할 때 첫번째 행은 무시해야 하는데, --header-in 옵션을 사용하면 된다.

# 항목 구분자는 공백, 첫번째 행은 계산에서 제외하고 2번째 항목의 합계 계산
cat fruits.txt | datamash -t ' ' --header-in sum 2

그 외에도 뭔가 복잡한 기능들이 많은데, 개인적으로 요긴하게 쓰는 범위는 이 정도다.

728x90
Posted by 반달가면