Есть текстовый файл, например, numbers.txt в котором в каждой строке одно число. Как сложить эти числа скриптом? Под Linux.
Отдельной утилитой или средствами bash.Есть идея в файле заменить концы строк на " + " и тогда
echo $(($(cat numbers.txt)))
выдаст сумму. Но как называется утилита способная заменить концы строк на набор текстовых символов?
>Есть текстовый файл, например, numbers.txt в котором в каждой строке одно число.
>Как сложить эти числа скриптом? Под Linux.
>Отдельной утилитой или средствами bash.Реализуется простым циклом while на bash
>Есть идея в файле заменить концы строк на " + " и
>тогда
>echo $(($(cat numbers.txt)))
>выдаст сумму. Но как называется утилита способная заменить концы строк на набор
>текстовых символов?Утилита называется sed.
>Есть текстовый файл, например, numbers.txt в котором в каждой строке одно число.
>Как сложить эти числа скриптом? Под Linux.
>Отдельной утилитой или средствами bash.cat numbers.txt | (
s=0
while read n
do
s=$(($s+$n))
done
echo $s
)>Есть идея в файле заменить концы строк на " + " и
>тогда
>echo $(($(cat numbers.txt)))
>выдаст сумму. Но как называется утилита способная заменить концы строк на набор
>текстовых символов?Не советую так делать. Рано или поздно файл станет достаточно большим и этот способо перестанет работать.
[...]
>Есть идея в файле заменить концы строк на " + " и
>тогда
>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