Просто так
$ paste -sd+ file | dc -e2k0 -f- -e+3/p
.71
Здесь мы используемdc
обратный польский калькулятор :для суммирования чисел, которые хотим записать в виде
1.0 0.46 + 0.67 +
однако проще заполнить стек нулем(-e0
)и сделать его
0 1.0+0.46+0.67 +
поскольку тело суммы может быть получено простымpaste command
:
$ paste -sd+ file
1.0+0.46+0.67
Наконец, нам нужен конечный постфикс +
для суммы и постфикс деления, который мы можем написать в другой -e
команде (, не забывая печатать окончательный результат )как -e+3/p
.
Последняя проблема заключается в том, что хотя dc
может работать с произвольной точностью, деление по умолчанию имеет точность 0 и, следовательно, возвращает целочисленный результат. Мы можем изменить это с помощью команды 2k
, которая помещает 2
в стек, а затем извлекает его и использует результат для установки точности.
Собираем все воедино:
paste -sd+ file | dc -e2k0 -f- -e+3/p
Если вы работаете с выпуском Ansible, который поддерживает коллекции, в файле ansible.builtin.yum есть опция безопасности-https://docs.ansible.com/ansible/latest/collections/ansible/builtin/yum_module.html
Если это невозможно, я думаю, вам придется использовать оболочку или командные модули для выполнения команды yum так же, как если бы вы делали это в командной строке.