читать из файла и добавлять номера - PullRequest
10 голосов
/ 04 апреля 2010

У меня есть текстовый файл с записями вроде 123 112 3333 44 2

Как сложить эти числа и получить их сумму.

Ответы [ 4 ]

13 голосов
/ 04 апреля 2010

Пример:

$ cat numbers.txt
123 112 3333 44 2

$ SUM=0; for i in `cat numbers.txt`; do SUM=$(($SUM + $i)); done; echo $SUM
3614

См. Также: Введение в программирование на Bash, раздел об арифметической оценке

Другой способ - использовать bc, язык калькулятора произвольной точности:

$ echo '123 112 3333 44 2' | tr ' ' '\n' | paste -sd+ | bc
3614

Вставка обычно работает со строками, поэтому нам нужно tr.

5 голосов
/ 04 апреля 2010

Вариант только для Bash (без cat) при ответ MYYN .

sum=0; for i in $(<number_file); do ((sum += i)); done; echo $sum

Также обратите внимание на более простое арифметическое утверждение.

2 голосов
/ 04 апреля 2010

только одна команда awk делает это. Он также не ломается, если у вас есть десятичные числа для добавления.

awk '{for(i=1;i<=NF;i++)s+=$i}END{print s}' file
0 голосов
/ 04 апреля 2010

В качестве альтернативы в Awk

echo "123 112 3333 44 2" | awk 'BEGIN {sum=0} {for(i=1; i<=NF; i++) sum+=$i } END {print sum}'

Или, если это в файле

cat file.txt | awk 'BEGIN {sum=0} {for(i=1; i<=NF; i++) sum+=$i } END {print sum}'

Я считаю, что Awk гораздо легче читать / запоминать. Хотя решение "Дейв Джарвис" особенно изящно!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...