bc: get the sum of a list of num

NOrder picture NOrder · May 18, 2012 · Viewed 8.9k times · Source

Jack   10
J      10 
A      20 
Lu cal 20
A bc U 20

I want to get the sum of these nums: 10+10+20+20+20 = 80

but I can't use cat input|cut -d " " -f 3 to get the num, how can I do it?

Answer

Tiago Peczenyj picture Tiago Peczenyj · May 18, 2012

You can use grep + paste + bc

$ grep -oE '[0-9]+' file
10
10
20
20
20

$ grep -oE '[0-9]+' file | paste -s -d + - 
10+10+20+20+20

$ grep -oE '[0-9]+' file | paste -s -d + - | bc
80

instead grep, you can use cut

$ cut -c 8- file

or just awk

$ awk '{print $NF}' file

BUT if you can use awk, you can sum using awk

$ awk '{total += $NF} END { print total }' file