More than one time I wanted to sum up numbers in the shell.
Imagine a command producing a list of numbers like this:
$ ...
42
23
966
1764
529
4711
Now calculating the sum of these numbers is not trivial. Using tools like bc
or calc
directly is not possible because you would need to put plus signs between the numbers first. So you could probably replace all ‘\n’ with ‘+’ with tr
— but not the last one as that would lead to a syntax error later. Or as an alternative you could write a long shell construct with while read ...
etc. In short this is just getting way too complicated for such a simple task.
Here is the simple solution in awk
:
$ ... | awk 'BEGIN {total = 0} {total += $1} END {print total}'
8035