gpt4 book ai didi

json - JQ - 按层次结构解析字段

转载 作者:行者123 更新时间:2023-11-29 09:50:36 25 4
gpt4 key购买 nike

我有非常大的 json,我想使用 jq 从中提取数据总和。

我正在尝试各种可能的方法,但我想我在这里遗漏了一些东西..

我的 Json 子集:

{"main":
{"0": {"x": {"a":1}, "y": {"number of un-used":{"count":2} , "z":2}},
"1": {"x": {"a":1}, "y": {"number of un-used":{"count":3} , "z":2}},
"2": {"x": {"a":1}, "y": {"number of un-used":{"count":4} , "z":2}},
"3": {"x": {"a":1}, "y": {"no un-used":{"z":3} , "z":2}},
"4": {"x": {"a":1}, "y": {"no un-used":{"z":3} , "z":2}}},
"no-main":
{"0": {"x": {"a":1}, "y": {"number of un-used":{"count":2} , "z":2}},
"1": {"x": {"a":1}, "y": {"number of un-used":{"count":3} , "z":2}},
"2": {"x": {"a":1}, "y": {"number of un-used":{"count":4} , "z":2}},
"3": {"x": {"a":1}, "y": {"no un-used":{"z":3} , "z":2}},
"4": {"x": {"a":1}, "y": {"no un-used":{"z":3} , "z":2}}}}

我想要“计数”的总和 - “y”下的“未使用的数量”。

我最成功的一个是:

cat json | jq '.[] | .[].y | .["number of un-used"] | .count'

但结果包含很多“null”,因为“未使用的数量”并不在所有“y”字典中..

可以解决吗?

最佳答案

您可以将零添加到 null 以获得...零。

jq '.[] | .[].y | ."number of un-used" | .count + 0' < input.json

这会生成您要查找的 count 值列表,其中 null 值显示 0。将它们添加到您的总和中不应改变它。

jq 可以在其表达式中进行基本算术运算,但让它在内部计算总和会稍微复杂一些。虽然您可以定义一个使用 reduce 的函数,但通过向命令行附加一些内容可能更容易对这些值求和,如下所示:

| awk '{n+=$1}END{print n}'

当然,有无数种方法可以将数字相加,有些方法比其他方法更难懂。

$ { printf '%s+' $(jq '.[] | .[].y | ."number of un-used" | .count + 0' input.json); echo 0; } | bc
18

关于json - JQ - 按层次结构解析字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48205247/

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