Вот вам пара утилит. Первый вычисляет среднее значение переданных ему чисел (по одному числу в строке ). Второй использует первый для вычисления стандартного отклонения от чисел в файле.
Исполняемый файлaverage
:
#!/usr/bin/awk -f
/^[0-9.+-]/ { sum += $0; ++n }
END { print sum / n }
Этот awk
скрипт будет считывать ввод из файла или из стандартного ввода и вычислять среднее число в нем. Он ожидает одно число в строке.
Исполняемый файлstdev
:
#!/bin/sh
awk -v avg="$(./average "$1" )" \
'/^[0-9.+-]/ { sum += ($0 - avg)^2; ++n }
END { print sqrt(sum / (n - 1)) }' "$1"
Этот сценарий оболочки сначала использует приведенный выше сценарий average
для вычисления среднего значения данных в файле, указанном в командной строке. Этот номер присваивается переменной awk
avg
. Затем он использует тот же тип обнаружения чисел, что и скрипт average
, для вычисления стандартного отклонения.
Поскольку этот скрипт написан прямо сейчас, он требует данные из файла, а не со стандартного ввода.
Один из способов использования этого для ваших данных:
sed -n '/^<Score>/s///p' input.dat >output.dat
С заданными данными будет создан файл с именем output.dat
, содержащий следующее:
4
2
3
Использование скрипта stdev
выше для этого файла:
$./stdev output.dat
1
Насколько я понимаю, это правильно.
Конечно,вы также можете сделать это напрямую в одном awk
вызове, без создания каких-либо повторно используемых инструментов:
awk -F '>' '/^<Score>/ { v[++n] = $2; s += $2 }
END { avg = s/n;
for (i=1; i<=n; ++i) {
std += (v[i] - avg)^2;
}
print sqrt(std / (n - 1));
}' input.dat
Отредактировано Внимательно изучив файл dockerfile, вы не устанавливаете tomcat, перейдите по этой ссылке, чтобы начать :https://gist.github.com/lobster1234/af2dc4eef3ee75117043d950c2c1ec2b
Вам нужно немного отладить его... Сначала нужно запустить контейнер и сопоставить порты :docker run -it -p 8080:8080 $container_name
, затем убедитесь, что брандмауэр отключен в контейнере, вы можете перейти в контейнер с помощью docker exec -it $container_name bash
и запустить ufw disable
еще одна вещь, которую нужно сделать, пока вы находитесь внутри контейнера, это проверить, что сервер tomacat действительно работает...
сказав, что^ ваш файл докера не показывает, что вы разрешаете запуск tomcat как службы по умолчанию или вызываете скрипт, который будет запускать его (я почти уверен, что это выпуск)
Если сервер tomcat запущен, вы должны посмотреть, нет ли ошибок в журналах tomcat, которые могут указывать на проблему
удачи