从命令输出计算数字的平均值

Calculate the Average of Numbers from command output

需要有关 nvidia-smi 命令的帮助。当我运行以下命令时:

nvidia-smi --format=csv --query-gpu=utilization.gpu

它returns:

utilization.gpu [%]
89 % 
45 %
22 %
68 %

我想要一个使用这些返回值并计算平均值的脚本。 所以它应该这样做 89 + 45 + 22 + 68 = 224 / 4 = 56

有办法吗?

nvidia-smi --format=csv --query-gpu=utilization.gpu | awk '/[[:digit:]]+[[:space:]]%/ { tot+=;cnt++ } END { print tot/cnt }'

将 nvidia-smi 的输出通过管道传输到 awk。具有一位或多位数字、space 和“%”的流程行。创建一个 运行 总数 (tot) 并计算出现的次数 (cnt) 最后,将 tot 除以 cnt 并打印结果。

nvidia-smi --format=csv --query-gpu=utilization.gpu | tail -n +2 | awk '{ sum+= }END { print sum/NR }'

使用 tail 获取除第一行以外的所有行,然后计算第 1 列的平均值。