У меня есть серия greps, awks и seds, которые создают список чисел, по одному в каждой строке. Что-то вроде этого:
1.13
3.59
1.23
Как я могу передать это чему-то, что будет выводить среднее, максимальное и минимальное значение?
Поскольку вы уже используете 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}'
Я считаю эту программу полезной для генерации статистики по спискам чисел в командной строке: http://web.cs.wpi.edu/~claypool/misc/stats/stats.html
Также существует simple-r, который может делать почти все, что может R, но с меньшим количеством нажатий клавиш:
https://code.google.com/p/simple-r/
Чтобы вычислить среднее, максимальное и минимальное значение, необходимо ввести одно из следующих значений:
r summary file.txt
r summary - < file.txt
cat file.txt | r summary -
На заметку @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