JQ讓我非理性地生氣,我鄙視它的存在。我已經嘗試提取tf-name密鑰的值 30 分鐘,如果我必須再次嘗試,我將成為隱士。請問,我如何得到tmp結果?
? aws resourcegroupstaggingapi get-resources --tag-filters Key=tf-name,Values=tmp --profile=test | jq
{
"ResourceTagMappingList": [
{
"ResourceARN": "arn:aws:s3:::stack-hate-1234567890salt",
"Tags": [
{
"Key": "aws:cloudformation:stack-name",
"Value": "hatestack"
},
{
"Key": "aws:cloudformation:stack-id",
"Value": "arn:aws:cloudformation:us-west-2:6666666666666:stack/FSStack/hate-hate-hate-123456789"
},
{
"Key": "tf-name",
"Value": "tmp"
},
{
"Key": "aws:cloudformation:logical-id",
"Value": "hatebucket1234"
},
{
"Key": "aws-cdk:auto-delete-objects",
"Value": "true"
}
]
}
]
uj5u.com熱心網友回復:
一旦您知道頂級物件的型別,它的提取就非常簡單。你可以看到ResourceTagMappingList一個記錄串列,所以它[]后面應該有一個符號,我認為大多數初學者jq往往會錯過。所以
.ResourceTagMappingList[].Tags | from_entries."tf-name"
應該為您提供所需的價值。看jqplay演示
它的作業方式是,該from_entries函式采用具有鍵名的物件陣列key并將value其轉換為僅值對。從那里,我們只提取鍵名tf-name。需要特殊的雙引號,因為這里的鍵名包含一個元字符-,應該用引號將整個字串視為鍵名。
另一種方法是使用select如下陳述句
.ResourceTagMappingList[].Tags[] | select(.Key == "tf-name").Value
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/471355.html
下一篇:基于變數計數構建資源
