每一行在一列中包含文本和数字。我需要计算每行中数字的总和。我怎样才能做到这一点?谢谢
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}'