如何快速对文件中的所有数字求和?

如何快速对文件中的所有数字求和?

每一行在一列中包含文本和数字。我需要计算每行中数字的总和。我怎样才能做到这一点?谢谢

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}'

相关内容