2
我正在嘗試使用JQ命令篩選JSON對象以選擇性地提取密鑰。下面是我放在文件x.txt一個樣本對象:JQ:篩選密鑰
{
"activities" : {
"-KSndgjqvmQkWVKHCpLh" : {
"create_device" : "...",
"stop_time_utc" : "2016-11-01T23:08:08Z"
},
"-KSoBSrBh6PZcjRocGD7" : {
"create_device" : "..."
},
"-KSptboGjo8g4bieUbGM" : {
"create_device" : "...",
"stop_time_utc" : "2017-01-17T23:08:08Z"
}
}
}
以下命令可以提取所有活動鍵:
cat x.txt | jq '.activities | keys'
[
"-KSndgjqvmQkWVKHCpLh",
"-KSoBSrBh6PZcjRocGD7",
"-KSptboGjo8g4bieUbGM"
]
我一直在谷歌上搜索並嘗試了几几小時嘗試過濾對象以僅選擇具有stop_time_utc值的活動條目,並使用類似於「select(.stop_time_utc | fromdateiso8601> now)」的選項來僅挑選已過期的活動。例如,我想使用過濾器只用一個相關條目的採樣對象創建磁盤陣列:
[
"-KSndgjqvmQkWVKHCpLh"
]
與鍵選擇了錯誤的路線嘗試呢?任何想法或建議將不勝感激。
感謝
感謝@peak指向with_entries的指針!以下是我現在用來提取過期活動名稱的完整命令: jq'.activities | with_entries(select(.value | has(「stop_time_utc」)))| with_entries(select(.value.stop_time_utc | fromdateiso8601?
DThimsen