Команда оболочки для суммирования целых чисел, по одному на строку? - PullRequest
765 голосов
/ 16 января 2009

Я ищу команду, которая примет в качестве входных данных несколько строк текста, каждая строка содержит одно целое число, и выведет сумму этих целых чисел.

Для справки: у меня есть файл журнала, который включает измерения времени, поэтому с помощью поиска соответствующих строк и небольшого переформатирования sed я могу перечислить все значения времени в этом файле. Тем не менее, я хотел бы вычислить итоговое значение, и у меня не осталось мыслей относительно любой команды, к которой я могу направить этот промежуточный вывод, чтобы получить окончательную сумму. Я всегда использовал expr в прошлом, но если он не работает в режиме RPN, я не думаю, что он справится с этим (и даже тогда это будет сложно).

Чего мне не хватает? Учитывая, что, вероятно, есть несколько способов достичь этого, я буду рад прочитать (и поддержать) любой подход, который работает, даже если кто-то уже опубликовал другое решение, которое выполняет эту работу.

Схожий вопрос: Кратчайшая команда для вычисления суммы столбца вывода в Unix? (кредиты @ Андрей )


Обновление : Вау, как и ожидалось, здесь есть несколько хороших ответов. Похоже, мне определенно придется провести awk более глубокую проверку в качестве инструмента командной строки в целом!

Ответы [ 42 ]

0 голосов
/ 28 марта 2019

Использование GNU datamash util :

seq 10 | datamash sum 1

Выход:

55
0 голосов
/ 22 марта 2013

... и версия PHP, просто для полноты

cat /file/with/numbers | php -r '$s = 0; while (true) { $e = fgets(STDIN); if (false === $e) break; $s += $e; } echo $s;'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...