shell - 需要帮助将对象数组减少为一个总和

标签 shell jq

在shell脚本中,我有以下对象数组:

response={
        "product": "BIG MAC",
        "objects": [
                        {
                            "qty": 10,
                            "size": 32
                        },
                        {
                            "qty": 20,
                            "size": 53
                        },
                        {
                            "qty": 10,
                            "size": 54
                        }
        ]
    }

我正在编写一个 jq 函数来获取总量。
data=$( echo $response | jq '.objects[] | .qty ' )

这给了我一行数量,比如
10 20 10

我如何总结这些以获得值(value):
40

最佳答案

创建一个数组并通过管道将其通过 add :

jq '[.objects[] | .qty] | add'

使用 map可能会使这更简单,因为您不必“索引”.objects第一的:
jq '.objects | map(.qty) | add'

关于shell - 需要帮助将对象数组减少为一个总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58917592/

相关文章:

Linux shell : space in condition statement

linux - 遍历 Shell 中 grep 返回的行

shell - 如何使用shell脚本将已删除的文件行重定向到其他文件

json - jq 为 json 对象中的字符串添加前缀

json - 使用 Shell 脚本将 .txt 转换为 json

shell - 如何将文件的行按从末尾开始的第二个单词排序

linux - 如何使用 shell 脚本创建一个 zip 文件?

jq - 使用 jq 将字符串中的空格替换为加号

json - 使用 JQ 从文件中删除重复的 JSON block

json - 如何展开 JSON 对象?