читайте из файла и добавьте числа

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

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

10
задан Laks 3 April 2010 в 20:01
поделиться

4 ответа

Пример:

$ 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 .

13
ответ дан 3 December 2019 в 19:32
поделиться

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

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

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

5
ответ дан 3 December 2019 в 19:32
поделиться

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

awk '{for(i=1;i<=NF;i++)s+=$i}END{print s}' file
2
ответ дан 3 December 2019 в 19:32
поделиться

Альтернативно в 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 намного легче читать / запоминать. Хотя решение «Дэйва Джарвиса» особенно изящное!

0
ответ дан 3 December 2019 в 19:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: