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?
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?
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
Assuming your file is called input.txt:
echo $(sed 's/[^0-9]*\([0-9]*\).*/\1+/' input.txt) '0' | bc
(I'm sure there is a more elegant way to do it with sed or perhaps awk, this is just a quick hack to add a terminating '0' to make bc happy. Run different parts of the command separately to figure out what's going on)
You could replace all whitespace with a + and pipe the result to bc
echo "5 6 2" | sed -E -e 's/\s+/+/g' | bc
© 2022 - 2024 — McMap. All rights reserved.
cut
; that should be a hint to get you going. You don't needcat
either. You might need to useawk
to do the summing, orsed
to insert necessary extra characters. – Clearway