我输入的json文件:
{ "london": [ "x", 0 ] }
{ "london": [ "y", 97 ] }
{ "paris": [ "x", 15 ] }
{ "paris": [ "y", 8 ] }
我尝试按键分组并输出:
{ "london": ["x", 0], ["y", 97] },
{ "paris": ["x", 15], ["y", 8] }
或:
{ "london": [ {"x", 0}, {"y", 97} ] },
{ "paris": [ {"x", 15}, {"y", 8} ] }
以下命令给我一条错误消息:
jq -s 'group_by(keys_unsorted[0]) | map({(.[0]): map(.[1])})'
jq:错误(位于:4):无法用数字索引对象
我尝试将数字更改为字符串,但是没有帮助。 我想我错过了地图上的一些东西(?)
您的预期输出不是有效的 JSON(它们要么缺少数组括号,要么有大量逗号)。两个中的第一个甚至将多个值列出到单个对象键,这是不可能的(除非该值用数组括号括起来)。以下是如何开始从流中收集数据:
jq -n 'reduce (inputs | to_entries)[] as $e ({}; .[$e.key] += [$e.value])'
{
"london": [
[
"x",
0
],
[
"y",
97
]
],
"paris": [
[
"x",
15
],
[
"y",
8
]
]
}
从这里开始,决定你的(有效)目标结构应该是什么样子,如果需要,可以据此提出另一个问题。