집계 계산을 위한 구문을 제공하는 awk 버전이 있습니까?

집계 계산을 위한 구문을 제공하는 awk 버전이 있습니까?

나는 가끔 간단한 통계를 계산하기 위해 awk 스크립트를 작성하는 경우가 있습니다. 예를 들어 히스토그램, 평균, 표준 편차 또는 값의 분산 등을 계산합니다.

보조 배열/변수 및 절 등의 for 루프를 사용하여 이 작업을 반복적으로 수행하는 것은 END약간 지루하고 오류가 발생하기 쉽습니다.

존재하다이런 종류의 작업을 위한 정말 훌륭한 구문이 있습니다.중합. 개념/API는 다음과 유사합니다.Boost C++ 라이브러리의 누산기.

그래서 제 질문은: 그러한 통계를 쉽게 반복적으로 계산할 수 있도록 유사한 개념/구문을 제공하는 awk 변형이 있습니까?

이 구문의 상상력이 풍부한 예는 다음과 같습니다.

$ someawk '{ @time[$1] = avg($2) }' measurements.log
prog1    150
prog2    200
....

(여기서 첫 번째 열에는 프로그램 이름이 포함되고, 두 번째 열에는 단일 측정의 실행 시간, measurements.log각 프로그램에 대한 여러 측정값이 포함되고, 집계 함수는 avg평균을 계산합니다.)

답변1

awk는 간단한 텍스트 처리를 위해 설계되었습니다. 더 많은 것을 원한다면 awk를 버리고 더 강력한 언어를 사용해야 합니다.

진주자연스러운 진행입니다. 이는 awk 및 유사한 구문의 대부분의 기능을 가지며 대부분의 비임베디드 UNIX 시스템에 기본적으로 설치됩니다. 나는 당신이 설명하는 통계 분석을 수행할 수 있는 라이브러리를 알지 못하지만 다음이 있습니다.많은 도서관저기.

통계 분석을 위해 선택한 언어는 다음과 같습니다.오른쪽. 텍스트 처리에서는 awk보다 약하므로 데이터가 이미 R이 이해할 수 있는 형식이 아닌 한 awk를 R로 파이프하여 먼저 처리해야 합니다. 보다단일 명령으로 숫자 목록의 최소값, 최대값, 중앙값 및 평균을 얻는 방법이 있습니까?귀하의 예와 유사하게 R을 사용하는 예입니다.

관련 정보