我的输入json文件:
{ "london": [ "x", 0 ] }
{ "london": [ "y", 97 ] }
{ "paris": [ "x", 15 ] }
{ "paris": [ "y", 8 ] }
我try 按键分组并输出:
{ "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:error(at:4):无法用数字索引对象
我试着把数字改成字符串,但无济于事. 我想我在 map 上漏掉了一些东西
编辑:
关于@pmf的回答的详细说明. 原始来源为:
{
"city": "london",
"zoo": [
{ "room": { "name": "x" }, "gpu": { "id": "fish", "sum": 0 } },
{ "room": { "name": "y" }, "gpu": { "id": "zebra", "sum": 97 } }
]
}
{
"city": "paris",
"zoo": [
{ "room": { "name": "x" }, "gpu": { "id": "fish", "sum": 15 } },
{ "room": { "name": "y" }, "gpu": { "id": "zebra", "sum": 8 } }
]
}
我试着获得如上的输出.我从以下几个方面开始:
jq -c '.city as $j | foreach .zoo[] as $i (.; .; {($j): [$i.room.name, $i.gpu.sum]})'
然后我坚持了下来,@PMF帮助了我.我还能做别的吗?