如何对awk捕获的浮点值求和

如何对awk捕获的浮点值求和,awk,Awk,我想将MB数与awk求和:: $ docker images | awk -t '{print $7}' | head 524MB 69.2MB 511MB 511MB 364MB 364MB 455MB 98.2MB $ 我把左边的“M”剪掉了: $ docker images | awk -t '{print $7}'| grep MB | awk -F 'M' '{print $1}' 524 69.2 511 511 364 364 455 98.2 下面的命令返回零和 $

我想将MB数与awk求和::

$ docker images | awk  -t '{print $7}' | head

524MB
69.2MB
511MB
511MB
364MB
364MB
455MB
98.2MB
$ 
我把左边的“M”剪掉了:

$ docker images | awk  -t '{print $7}'| grep MB | awk -F 'M' '{print $1}'
524
69.2
511
511
364
364
455
98.2
下面的命令返回零和

$ docker images | awk  -t '{print $7}'| grep MB | awk -F 'M' '{print $1}{s+=$$1}END{print s}'

考虑到您的所有值将仅以MB为单位

docker images | awk '{sum+=$0+0} END{print sum}' 
或者,如果您的命令也有其他大小单位,并且您只想查找MB大小,然后尝试以下操作

docker images | awk '/[mM][bB]/{sum+=$0+0} END{print sum}'
解释
awk
代码:


基本上这就足够了:

数据:

Awk:

因此,要仅将您的示例转换为awk,请执行以下操作:

$ docker images | awk '/MB/{s+=$7}END{print s}'

这是否也应该将
kB
GB
转换为
MB
$ cat file
524MB
69.2MB
511MB
511MB
364MB
364MB
455MB
98.2MB
$ awk '{s+=$1}END{print s}' file
2896.4
$ docker images | awk '/MB/{s+=$7}END{print s}'