I have a text file with entries like 123 112 3333 44 2
How to add these numbers and get their amount.
Example:
$ cat numbers.txt 123 112 3333 44 2 $ SUM=0; for i in `cat numbers.txt`; do SUM=$(($SUM + $i)); done; echo $SUM 3614
See also: Bash Introduction to Programming, Arithmetic Evaluation Section
A Bash is just ( cat ) a variation of MYYN's answer.
cat
sum=0; for i in $(<number_file); do ((sum += i)); done; echo $sum
Also note the simpler arithmetic operator.
only one awk command is executed. It will not break when you have decimal numbers to add as well.
awk '{for(i=1;i<=NF;i++)s+=$i}END{print s}' file
Alternative to Awk
echo "123 112 3333 44 2" | awk 'BEGIN {sum=0} {for(i=1; i<=NF; i++) sum+=$i } END {print sum}'
Or if it is in a file
cat file.txt | awk 'BEGIN {sum=0} {for(i=1; i<=NF; i++) sum+=$i } END {print sum}'
I find Awk much easier to read / remember. Although the Dave Jarvis solution is especially neat!