![如何快速对文件中的所有数字求和?](https://linux22.com/image/65861/%E5%A6%82%E4%BD%95%E5%BF%AB%E9%80%9F%E5%AF%B9%E6%96%87%E4%BB%B6%E4%B8%AD%E7%9A%84%E6%89%80%E6%9C%89%E6%95%B0%E5%AD%97%E6%B1%82%E5%92%8C%EF%BC%9F.png)
每一行在一列中包含文本和数字。我需要计算每行中数字的总和。我怎样才能做到这一点?谢谢
example.log 包含:
time=31sec
time=192sec
time=18sec
time=543sec
答案应该是第784章
答案1
如果您选择grep
支持-o
,您可以尝试:
$ grep -o '[[:digit:]]*' file | paste -sd+ - | bc
784
POSIXly:
$ printf %d\\n "$(( $(tr -cs 0-9 '[\n*]' <file | paste -sd+ -) ))"
784
答案2
使用较新版本 (4.x) 的 GNU awk
:
awk 'BEGIN {FPAT="[0-9]+"}{s+=$1}END{print s}'
与其他awk
人一起尝试:
awk -F '[a-z=]*' '{s+=$2}END{print s}'
答案3
awk -F= '{sum+=$2};END{print sum}'
答案4
sed 's/=/ /' file | awk '{ sum+=$2 } END { print sum}'