gpt4 book ai didi

json - 使用 jq 对 JSON 中特定字段的值求平均值

转载 作者:行者123 更新时间:2023-12-02 19:12:04 29 4
gpt4 key购买 nike

我有以下 JSON 数据。

{
"meta":{
"earliest_ts":1601425980,
"latest_ts":1601482740,
"interval":"minutes",
"level":"cluster",
"entity_id":"xxxxx-xxxxx-xxxxx-xxxxx-xxxxx",
"stat_labels":[
"status_code_classes_per_workspace_total"
],
"entity_type":"workspace",
"start_ts":"1601425980"
},
"stats":{
"cluster":{
"1601431620":{
"3xx":2,
"4xx":87,
"5xx":31,
"2xx":352
},
"1601472780":{
"3xx":14,
"4xx":296,
"5xx":2,
"2xx":3811
},
"1601479140":{
"3xx":17,
"4xx":397,
"5xx":19,
"2xx":4399
}
}
}
}

我尝试计算所有 "3xx" 的平均值。字段。

使用jq ,我设法获取每个集群的 key :

echo $data | jq -r '.stats.cluster|keys' | while read key; do 
echo $key
done

输出:

[
"1601431620",
"1601472780",
"1601479140"
]

但是当我尝试更进一步时,我无法进一步从每个字段检索数据。我从this得到了一些启发.

下面的代码不起作用,但你明白了:

 # total var will be used to calculate the average
total=$(echo $data | jq ".stats.cluster" | jq length)

# for each cluster ...
echo $data | jq '.stats.cluster|keys' | while read key; do
# ... we retrieve the value "3xx"
i=$($data | jq '.stats.cluster.$key."3xx"')
# ... that we add into a sum var
sum=$(( sum + i ))
done

# we calculate the average
avg=$(( $sum / $total ))
echo "The average is $avg"

我无法像jq '.stats.cluster."1601431620"."3xx"一样直接路径到jq中的数据因为集群非常多,并且一直在变化。

上面的示例所需的输出将是 11(2 + 14 + 17) / 3 ,这些数字都来自 3xx的项目字段。

最佳答案

可以直接从jq获取值:

$ jq '[.stats.cluster[]["3xx"]] | add / length' <<< "$data"
11

关于json - 使用 jq 对 JSON 中特定字段的值求平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64142411/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com