bash를 사용하여 숫자 목록에서 평균, 최대 및 최소를 어떻게 알 수 있습니까?


18

일련의 파이프 그렙, awk 및 sed가있어 각 줄에 하나씩 숫자 목록을 생성합니다. 이 같은:

1.13
3.59 
1.23

평균, 최대 및 최소를 출력하는 것으로 파이프를 파이프하는 방법은 무엇입니까?


grep, awk 및 sed를 함께 파이프하는 경우 awk를 한 번만 호출해도 동일한 작업을 수행 할 수 있습니다.
추후 공지가있을 때까지 일시 중지되었습니다.

답변:


27

이미 awk를 사용하고 있기 때문에

blahblahblah | awk '{if(min==""){min=max=$1}; if($1>max) {max=$1}; if($1<min) {min=$1}; total+=$1; count+=1} END {print total/count, max, min}'

니스, 그것은 나를 위해 작동합니다!
JavaRocky

나는 이미 숫자 목록과 '시간'을 사용하는 것과 같은 수, 평균, 최소, 최대 수를 허용하는 바이너리가 있다고 생각했습니다.
JavaRocky

1
위의 awk패턴을 /usr/local/bin/stats그런 식으로 넣은 다음로 사용하십시오 blabla | stats.
Acumenus


0

R이 할 수있는 거의 모든 작업을 수행 할 수 있지만 키 입력은 줄이면서 더 간단합니다.

https://code.google.com/p/simple-r/

평균, 최대 및 최소를 계산하려면 다음 중 하나를 입력해야합니다.

r summary file.txt
r summary - < file.txt
cat file.txt | r summary -

0

@DerfK의 모자 끝으로 :

perl -lane '$n=$F[0]; if(not defined $min){$min=$max=$n}; if($n>$max){$max=$n}; if($n<$min){$min=$n}; $total+=$n; $count+=1; END{print $total/$count." $max $min"}'

$F[0] 각 줄의 첫 번째 (0) 필드 값

입력 데이터가 쉼표로 구분 된 경우 -F,앞에 수정자를 추가하십시오-lane

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.