我的 Json 檔案具有如下資料:
[
{
"id": 47,
"iid": 12,
"project_id": 1,
"status": "pending",
"source": "push",
"ref": "new-pipeline",
"sha": "ab23456789d",
"web_url": "https://example.com/project/pipelines/47",
"created_at": "2022-02-24T11:28:34.085Z",
"updated_at": "2016-08-24T15:32:35.169Z"
},
{
"id": 48,
"iid": 13,
"project_id": 1,
"status": "pending",
"source": "web",
"ref": "new-pipeline",
"sha": "ab23456789d",
"web_url": "https://example.com/project/pipelines/48",
"created_at": "2022-02-23T11:28:34.085Z",
"updated_at": "2016-08-23T15:32:35.169Z"
}
]
我正在嘗試獲取在過去 15 分鐘內創建的 ID。但我無法得到它。
我嘗試了以下方法,
TIM=`date -u "%Y-%m-%dT%H:%M:%S.000Z" -d '-15 minutes'`
jq -r --arg TIMEE "$TIM" '.[]|select((.ref|contains("dev")) and (.updated_at >= "$TIMEE"))|.id' MyJsonFile.json
但這并沒有按預期作業。我沒有看到任何 ID。但是當提出條件時(.updated_at >= "$TIMEE")。我可以看到所有在最后一分鐘創建的 ID。
不確定我是否以正確的方式嘗試。任何幫助深表感謝。
uj5u.com熱心網友回復:
您可以檢查 jq 內的時間,但它只處理 ISO 8601 日期,沒有毫秒。因此,您必須將它們切斷以進行比較。now給你當前時間。
jq '.[] | select(.updated_at | "\(.[:-5])Z" | fromdate 900 > now).id'
如果你想有一個幾分鐘的引數,請嘗試:
jq --argjson min 15 '
.[] | select(.updated_at | "\(.[:-5])Z" | fromdate 60 * $min > now).id
'
uj5u.com熱心網友回復:
TIM=`date -u "%Y-%m-%dT%H:%M:%S.000Z" -d '-15 minutes'`
jq -r --arg TIMEE "$TIM" '.[]|select((.ref|contains("dev")) and (.updated_at >= $TIMEE))|.id' MyJsonFile.json
只需洗掉 "$TIMEE" 周圍的引號即可。如果您參考它,它可能會被視為一個字串。
可以在這里查看:jq playground link with an example
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/432225.html
