作為輸入,我有:
[
{
"backup": [
{
"timestamp": { "start": 1642144383, "stop": 1642144386 },
"info": { "size": 1200934840},
"type": "full"
},
{
"timestamp": {"start": 1642144388, "stop": 1642144392 },
"info": { "size": 1168586300
},
"type": "incr"
}
],
"name": "dbname1"
},
{
"backup": [
{
"timestamp": { "start": 1642144383, "stop": 1642144386 },
"info": { "size": 1200934840},
"type": "full"
},
{
"timestamp": {"start": 1642144388, "stop": 1642144392 },
"info": { "size": 1168586300
},
"type": "incr"
}
],
"name": "dbname2"
}
]
使用
jq '.[]
| [ .backup[] {name} ]
| max_by(.timestamp.stop)
'
(感謝@pmf)我可以重新訂購
{
"timestamp": {
"start": 1642144388,
"stop": 1642144392
},
"info": {
"size": 1168586300
},
"type": "incr",
"name": "dbname1"
}
{
"timestamp": {
"start": 1642144388,
"stop": 1642144392
},
"info": {
"size": 1168586300
},
"type": "incr",
"name": "dbname2"
}
Selected 是包含最大時間戳和添加到其中的名稱的字典,是資料庫的最后創建備份。可能有多個資料庫。如何將輸出形成格式清晰的陣列?我希望
[
{
"timestamp": {
"start": 1642144388,
"stop": 1642144392
},
"info": {
"size": 1168586300
},
"type": "incr",
"name": "dbname1"
},
{
"timestamp": {
"start": 1642144388,
"stop": 1642144392
},
"info": {
"size": 1168586300
},
"type": "incr",
"name": "dbname2"
}
]
是的,我可以使用 sed 添加它,但我覺得 jq 應該能夠做到這一點。所以問題是這應該怎么寫?
uj5u.com熱心網友回復:
而不是.[] | …使用map(…)保留陣列。
jq 'map([.backup[] {name}] | max_by(.timestamp.stop))'
[
{
"timestamp": {
"start": 1642144388,
"stop": 1642144392
},
"info": {
"size": 1168586300
},
"type": "incr",
"name": "dbname1"
},
{
"timestamp": {
"start": 1642144388,
"stop": 1642144392
},
"info": {
"size": 1168586300
},
"type": "incr",
"name": "dbname2"
}
]
演示
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/412341.html
標籤:
