unixbc

bc: get the sum of a list of num



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?


Solution

  • 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