linux - 如何在jq中的对象内分组
问题描述
我有这个 JSON 对象
{
"id_1": {
"day_1": {
"loc_sec": 886,
"int_sec": null
}
},
"id_1": {
"day_2": {
"loc_sec": 575,
"int_sec": null
}
},
"id_2": {
"day_1": {
"loc_sec": 140,
"int_sec": null
}
},
"id_2": {
"day_2": {
"loc_sec": 138,
"int_sec": null
}
}
}
我想要这样的输出
{
"id_1": {
"day_1": {
"loc_sec": 886,
"int_sec": null
},
"day_2": {
"loc_sec": 575,
"int_sec": null
}
},
"id_2": {
"day_1": {
"loc_sec": 140,
"int_sec": null
},
"day_2": {
"loc_sec": 138,
"int_sec": null
}
}
}
如何使用 bash 脚本和 jq 实现这一点?这似乎是按功能分组的,但我无法弄清楚。
解决方案
这是使用 jq 的 --stream 选项的解决方案:
jq -n --stream '
def stream:
foreach ((inputs | select(length==2)), null) as $kv (null;
if $kv == null then .emit = .value
else .emit = null
| $kv[0][0] as $k
| if .k and ($k != .k)
then .emit = .value | .value = null
else .
end
| .value |= setpath($kv[0]; $kv[1])
| .k = $k
end;
select(.emit).emit);
[stream] | add
' input.json
推荐阅读
- javascript - Angular:从父组件更新子布尔组件
- apache-kafka - 无法在 kafka 中为批处理模式设置错误处理程序
- javascript - React Router Link 正在更改 URL,但组件保持不变
- python-3.x - 使用扭曲的 SSL4ClientEndpoint 而不验证服务器证书
- html - css 计数器结果为 0
- asp.net - 从动态创建的文本框中获取用户的文本框输入
- linux - 从 redhat 次要版本 7.3 升级到 7.9
- python - Python matplotlib 逐行绘制图形
- javascript - 如果 inputText 使用 Angular 10 TypeScript 为空,则使用事件填充数组
- excel - VBA GoTo 函数 - 查找日期