URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 6972
[ Назад ]

Исходное сообщение
"Как сложить столбик чисел из файла или поменять концы строк на + ?"

Отправлено Fou , 25-Ноя-07 20:31 
Есть текстовый файл, например, numbers.txt в котором в каждой строке одно число. Как сложить эти числа скриптом? Под Linux.
Отдельной утилитой или средствами bash.

Есть идея в файле заменить концы строк на " + " и тогда
echo $(($(cat numbers.txt)))
выдаст сумму. Но как называется утилита способная заменить концы строк на набор текстовых символов?


Содержание

Сообщения в этом обсуждении
"Как сложить столбик чисел из файла или поменять концы строк ..."
Отправлено newser , 25-Ноя-07 21:05 
>Есть текстовый файл, например, numbers.txt в котором в каждой строке одно число.
>Как сложить эти числа скриптом? Под Linux.
>Отдельной утилитой или средствами bash.

Реализуется простым циклом while на bash

>Есть идея в файле заменить концы строк на " + " и
>тогда
>echo $(($(cat numbers.txt)))
>выдаст сумму. Но как называется утилита способная заменить концы строк на набор
>текстовых символов?

Утилита называется sed.


"Как сложить столбик чисел из файла или поменять концы строк ..."
Отправлено Аноним , 26-Ноя-07 08:13 
>Есть текстовый файл, например, numbers.txt в котором в каждой строке одно число.
>Как сложить эти числа скриптом? Под Linux.
>Отдельной утилитой или средствами bash.

cat numbers.txt | (
s=0
while read n
do
  s=$(($s+$n))
done
echo $s
)

>Есть идея в файле заменить концы строк на " + " и
>тогда
>echo $(($(cat numbers.txt)))
>выдаст сумму. Но как называется утилита способная заменить концы строк на набор
>текстовых символов?

Не советую так делать. Рано или поздно файл станет достаточно большим и этот способо перестанет работать.


"Как сложить столбик чисел из файла или поменять концы строк ..."
Отправлено phpcoder , 26-Ноя-07 10:40 
[...]
>Есть идея в файле заменить концы строк на " + " и
>тогда
>echo $(($(cat numbers.txt)))
>выдаст сумму. Но как называется утилита способная заменить концы строк на набор
>текстовых символов?

paste:

[c0der@rock ~]$ cat TEST
1
2
3
[c0der@rock ~]$ echo $((`paste -d+ -s TEST`))
6

Но, вам уже правильно сказали, что когда будет много чисел в файле, это работать не будет. Поэтому я бы рекомендовал использовать awk:

[c0der@rock ~]$ awk 'BEGIN{sum=0}{sum+=$1}END{print sum}' TEST
6