jq 简单 json 对象 merge/combination
jq simple json object merge/combination
a.json
{"a": 1}
b.json
{"b": 1}
期望的结果
{"a": 1, "b": 1}
jq -s "." a.json b.json
[
{
"a": 1
},
{
"b": 1
}
]
它被包裹在一个数组中
jq "." a.json b.json
{
"a": 1
}
{
"b": 1
}
这甚至无效json
jq 是不是用错了工具?哪个更合适?
尝试:
jq -s 'add' a.json b.json
结果:
{
"a": 1,
"b": 1
}
在某些情况下,可能需要避免“吞噬”对象,因为这需要比必要更多的内存。
无论如何,为了经济地完成任务,请将 -n 与 inputs
结合使用,如下所示:
reduce inputs as $i ({}; . + $i)
sigma/1
如果您不介意 sigma(empty)
的计算结果为 null
,您可以定义多态 sigma
,如下所示:
def sigma(s): reduce s as $x (null; . +$x);
这适用于数字流、对象流、数组流和字符串流,因此适合您的标准库。
无论如何,有了这个定义,对于手头的任务,你可以写:simga(inputs)
。
a.json
{"a": 1}
b.json
{"b": 1}
期望的结果
{"a": 1, "b": 1}
jq -s "." a.json b.json
[
{
"a": 1
},
{
"b": 1
}
]
它被包裹在一个数组中
jq "." a.json b.json
{
"a": 1
}
{
"b": 1
}
这甚至无效json
jq 是不是用错了工具?哪个更合适?
尝试:
jq -s 'add' a.json b.json
结果:
{
"a": 1,
"b": 1
}
在某些情况下,可能需要避免“吞噬”对象,因为这需要比必要更多的内存。
无论如何,为了经济地完成任务,请将 -n 与 inputs
结合使用,如下所示:
reduce inputs as $i ({}; . + $i)
sigma/1
如果您不介意 sigma(empty)
的计算结果为 null
,您可以定义多态 sigma
,如下所示:
def sigma(s): reduce s as $x (null; . +$x);
这适用于数字流、对象流、数组流和字符串流,因此适合您的标准库。
无论如何,有了这个定义,对于手头的任务,你可以写:simga(inputs)
。