linux - 对于第 2 列的唯一值,计算 linux 中第 11 列和第 17 列的所有对应值的平均值

标签 linux bash awk

Linux平台脚本:

zgrep "Storage Summary" /Storage/log/spoold/spoold.log.1.bz2|awk '{print $1, $2, $11, $17}'| sort -u

O/P :

November 19 27572.22 82.28
November 19 27585.55 82.32
November 19 27603.04 82.37
November 19 27611.72 82.40
November 19 27618.48 82.42
November 20 27631.96 82.46
November 20 27633.70 82.46
November 21 27645.05 82.50
November 21 27651.01 82.51
November 21 27652.94 82.52
November 21 27659.65 82.54
November 21 27674.55 82.58
November 21 27684.02 82.61
November 21 27691.34 82.63
November 21 27691.52 82.63
November 21 27697.52 82.65
November 22 27705.91 82.68
November 22 27729.71 82.75
November 22 27733.09 82.76
November 22 27770.01 82.87

我需要这样的输出

对于 $2 的每次出现(每天),计算 $11$17 的平均值,然后将 o/p 打印为 打印 $1、$2、$11、$17

最佳答案

zgrep "Storage Summary" /Storage/log/spoold/spoold.log.1.bz2 | awk '
    { date=$1 " " $2; used[date] += $11; usedp[date] += $17; count[date]++; }
    END { for (d in used) { print d, used[d]/count[d], usedp[d]/count[d] } }
    '

对于每个唯一日期,这会计算已用空间和已用空间百分比的总和,记录条目数,完成后打印出平均值 (total/number_of_entries)。 (我同时使用 $1 和 $2 作为日期,以防你想使用它超过一个月)。

关于linux - 对于第 2 列的唯一值,计算 linux 中第 11 列和第 17 列的所有对应值的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20165075/

相关文章:

macos - sed仅替换特定文件的第一个前导空格匹配-处理仅CR的行尾

linux - 在 awk 中拆分和比较

awk - 处理两个文件时在 AWK 中使用数组

linux - 在 linux 终端中查找并删除文件名中包含相同字符串的文件

linux - 错误 : Device or resourse is busy

linux - 如何在不将其通过管道传输到自身的情况下第二次制作 sed 编辑流?

python - python 中的 Bash 参数

c++ - 尝试通过 C++ 程序连接到 postgresql

linux - 尝试运行 bash 脚本时“找不到命令”

bash - Vim 格式化打印日期到当前文件