杰克 10 Ĵ 10 一个 20 卢卡 20 公元前 U 20
我想得到这些数字的总和:10+10+20+20+20 = 80
但我不能cat input|cut -d " " -f 3
用来获取数字,我该怎么做?
您可以使用 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
而不是 grep,您可以使用 cut
$ cut -c 8- file
或者只是 awk
$ awk '{print $NF}' file
但是如果你可以使用 awk,你可以使用 awk 求和
$ awk '{total += $NF} END { print total }' file
假设您的文件名为 input.txt:
echo `sed 's/[^0-9]*\([0-9]*\).*/\1+/' input.txt` '0' | bc
(我确信使用 sed 或 awk 有更优雅的方法,这只是添加终止 '0' 以使 bc 高兴的快速技巧。分别运行命令的不同部分以找出发生了什么在)
您可以用 + 替换所有空格并将结果传递给 bc
回声“5 6 2” | sed -E -e 's/\s+/+/g' | 公元前