我有以下数据,多个jq管道的输出:
[
{
"Russia": 1073849
}
]
[
{
"Spain": 593730
}
]
[
{
"France": 387252
}
]
[
{
"UK": 371125
}
]
Run Code Online (Sandbox Code Playgroud)
我想要的输出是:
[
{
"Russia": 1073849
},
{
"Spain": 593730
},
{
"France": 387252
},
{
"UK": 371125
}
]
Run Code Online (Sandbox Code Playgroud)
基于我尝试过的类似问题'.[]|transpose|map(add)',它给出了一个错误:Cannot index object with number。我也不能group_by(key),因为对象中没有公共键。
假设input.json文件是:
[{"Russia": 1073849}]
[{"Spain": 593730}]
[{"France": 387252}]
[{ "UK": 371125}]
Run Code Online (Sandbox Code Playgroud)
然后这个:
jq -s 'reduce .[] as $x ([]; . + $x)' input.json
Run Code Online (Sandbox Code Playgroud)
返回:
[
{
"Russia": 1073849
},
{
"Spain": 593730
},
{
"France": 387252
},
{
"UK": 371125
}
]
Run Code Online (Sandbox Code Playgroud)
笔记:
jq可以使用运算符合并数组+,例如[1]+[2]returns [1,2]。-s标志读取input.json所有条目并将其放入数组中。所以你最终得到了一个可以与 合并的数组数组reduce。这可以进一步简化:
jq -s 'add' input.json
Run Code Online (Sandbox Code Playgroud)