Ich habe eine Reihe von Greps, Awks und Seds, die eine Liste von Zahlen erzeugen, eine in jeder Zeile. Etwas wie das:
1.13
3.59
1.23
Wie kann ich das zu etwas leiten, das den Durchschnitt, das Maximum und das Minimum ausgibt?
Ich habe eine Reihe von Greps, Awks und Seds, die eine Liste von Zahlen erzeugen, eine in jeder Zeile. Etwas wie das:
1.13
3.59
1.23
Wie kann ich das zu etwas leiten, das den Durchschnitt, das Maximum und das Minimum ausgibt?
Antworten:
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}'
awk
Muster /usr/local/bin/stats
einfügen und es dann als verwenden blabla | stats
.
Ich finde dieses Programm nützlich, um Statistiken in Zahlenlisten über die Befehlszeile zu generieren: http://web.cs.wpi.edu/~claypool/misc/stats/stats.html
Es gibt auch simple-r, das fast alles kann, was R kann, aber mit weniger Tastenanschlägen:
https://code.google.com/p/simple-r/
Um Durchschnitt, Maximum und Minimum zu berechnen, müsste man Folgendes eingeben:
r summary file.txt
r summary - < file.txt
cat file.txt | r summary -
Mit einem Tipp auf @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]
ist der Wert im ersten (0.) Feld jeder Zeile
Wenn Ihre Eingabedaten durch Kommas getrennt sind, fügen Sie den -F,
Modifikator vor-lane