У меня есть файл с 1800 строками, которые выглядят так
600.76
600.66
700.44
566.66
Ect..
Я сделал скрипт bash для вычисления среднего значения.
Теперь я сначала создал переменную для подсчета общего количества строк столбца, например:
Lines="$(awk 'END{print NR}' file.txt)"
Затем еще одна переменная для суммы этого столбца, например:
Sum="$(awk '{s+1=$1}END {print s}' file.txt)"
Наконец, я нахожу среднее значение следующим образом:
Echo "scale=2 ; $Sum / $Lines" | bc
При включенной отладке возвращается:
+echo 'scale=2 ; 1.72161e+06 / 1800'
(Standard_1): syntax error
Теперь я понимаю, что bc не использует научную запись, но как мне обойти это.
Я согласен с короткой передачей десятичной дроби, ограничивая ее 2 или 3 знаками.
awk
? - person dawg   schedule 31.01.2017awk '{sum+=$1}END{print sum/NR}'
? - person twalberg   schedule 31.01.2017awk '{sum+=$1}END{printf "%f\n", sum/NR}
даст лучшие результаты.awk
имеет реализациюprintf
, которая имитирует многие (но не все) функции версии C... - person twalberg   schedule 01.02.2017