【发布时间】:2018-04-07 10:26:15
【问题描述】:
我正在尝试使用 jq 来过滤 json 块。我需要保留完整的结构,但过滤掉“不可配置”的子 json 块。
{
"properties": {
".properties.backup_options": {
"type": "selector",
"configurable": true,
"credential": false,
"value": "disable",
"optional": false
},
".properties.backup_options.enable.cron_schedule": {
"type": "string",
"configurable": true,
"credential": false,
"value": null,
"optional": false
},
".properties.backup_options.enable.backup_all_masters": {
"type": "boolean",
"configurable": true,
"credential": false,
"value": true,
"optional": false
},
".properties.backups": {
"type": "selector",
"configurable": false,
"credential": false,
"value": "disable",
"optional": false
},
".properties.backups.enable.endpoint_url": {
"type": "string",
"configurable": false,
"credential": false,
"value": null,
"optional": true
}
}
我已经能够过滤掉cat input.json | jq '.properties[] | select(.configurable==true)',但是这会丢失原始结构。
奖励标记还可以过滤掉子块中的一些字段,即删除凭据和类型行。
所以想要的输出是:
{
"properties": {
".properties.backup_options": {
"configurable": true,
"value": "disable",
"optional": false
},
".properties.backup_options.enable.cron_schedule": {
"configurable": true,
"value": null,
"optional": false
},
".properties.backup_options.enable.backup_all_masters": {
"configurable": true,
"value": true,
"optional": false
}
}
我是否需要嵌套多个 jq 语句来实现这一点?分解并重建?帮助(这已经花费了太多时间尝试不同的组合和教程)。
【问题讨论】: