我有一个使用 pgbackrest 生成的 json 格式的备份概述。为简单起见,我删除了很多杂物,因此保留了主要结构。该列表可以包含多个备份结构,为简单起见,我在此处将其缩减为 1。
[
{
"backup": [
{
"archive": {
"start": "000000090000000200000075",
"stop": "000000090000000200000075"
},
"info": {
"size": 1200934840
},
"label": "20220103-122051F",
"type": "full"
},
{
"archive": {
"start": "00000009000000020000007D",
"stop": "00000009000000020000007D"
},
"info": {
"size": 1168586300
},
"label": "20220103-153304F_20220104-081304I",
"type": "incr"
}
],
"name": "dbname1"
}
]
使用 jq 我试图从中生成一个简单的格式,直到现在没有任何运气。
我希望看到的是backup.archive、backup.info、backup.label、backup.type、名称组合在一个简单的结构中,而不需要进入笛卡尔积。我很高兴得到以下输出:
[
{
"backup": [
{
"archive": {
"start": "000000090000000200000075",
"stop": "000000090000000200000075"
},
"name": "dbname1",
"info": {
"size": 1200934840
},
"label": "20220103-122051F",
"type": "full"
},
{
"archive": {
"start": "00000009000000020000007D",
"stop": "00000009000000020000007D"
},
"name": "dbname1",
"info": {
"size": 1168586300
},
"label": "20220103-153304F_20220104-081304I",
"type": "incr"
}
]
}
]
其中 name 被冗余添加到列表中。如何使用 jq 将显示的输入转换为请求的输出?最后,我只想从数据中生成一个简单的 csv。即使使用简化的结构
'.[].backup[].name + ":" + .[].backup[].type'
我得到一个笛卡尔积:
"dbname1:full"
"dbname1:full"
"dbname1:incr"
"dbname1:incr"
如何解决?