2017-10-19 67 views
3

我想獲得一個任務定義列表,我可以通過AWS CLI創建一個列表。這是來自命令的部分列表;將JSON解析爲jq以從AWS CLI獲取列表

aws ecs list-task-definitions --region eu-west-1

{ 
    "taskDefinitionArns": [ 
     "arn:aws:ecs:eu-west-1:543573289192:task-definition/audience-view-dev-api:4", 
     "arn:aws:ecs:eu-west-1:543573289192:task-definition/audience-view-dev-groups:4", 
     "arn:aws:ecs:eu-west-1:543573289192:task-definition/audience-view-dev-groups:5", 
     "arn:aws:ecs:eu-west-1:543573289192:task-definition/audience-view-dev-mock-api:1", 
     "arn:aws:ecs:eu-west-1:543573289192:task-definition/audience-view-dev-mock-responder:1" 
    ] 
} 

從這個我想只顯示;

audience-view-dev-api 
audience-view-dev-groups 
audience-view-dev-groups 
audience-view-dev-mock-api 
audience-view-dev-mock-responder 

我相信如果我管這個到jq那麼我可以得到我後?我正在嘗試各種組合; aws ecs list-task-definitions --region eu-west-1 | jq -r '.taskDefinitionArns[].<something_here>'無濟於事

回答

3

嘗試這種情況:

$ aws ecs list-task-definitions --region eu-west-1 \ 
    | jq -Mr '.taskDefinitionArns[] | split(":")[5] | split("/")[1]' 

擴展:

.taskDefinitionArns[]  # for each taskDefinitionArns 
| split(":")[5]    # take entry [5] after splitting by : 
| split("/")[1]    # take entry [1] after splitting by/
+0

使用「5」解析看起來很脆弱。樣本數據表明,提取最後的「:」分隔的組件可能不太脆弱,例如, split(「:」)[ - 1] – peak

+0

查看[ListTaskDefinitions](http://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ListTaskDefinitions.html)和[Amazon資源名稱(ARN)](http ://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)docs目前尚不清楚。我假設這裏的ARN格式是「arn:partition:service:region:account-id:resourcetype:resource」,但它也可以是「arn:partition:service:region:account-id:resourcetype/resource」 (其中「資源」包含一個「:」)所以[RomanPerekhrest的回答](https://stackoverflow.com/a/46833048/8379597)可能實際上比這更好。 – jq170727

3

隨着JQmatch功能:

aws ecs list-task-definitions --region eu-west-1 \ 
| jq -r '.taskDefinitionArns[] | match(".*/([^:]+):[0-9]+$").captures[0].string' 
  • ".*/([^:]+):[0-9]+$" - 正則表達式的序列/之間匹配最後:字符

輸出:

audience-view-dev-api 
audience-view-dev-groups 
audience-view-dev-groups 
audience-view-dev-mock-api 
audience-view-dev-mock-responder 

https://stedolan.github.io/jq/manual/v1.5/#match(val),match(regex;flags)

+0

驚人!!請問你從哪裏學到這個功夫?你能否指出我可以更好地解釋它的網站? – eekfonky

+0

@eekfonky,歡迎光臨。檢查官方'jq'手冊https://stedolan.github.io/jq/manual/v1.5/ – RomanPerekhrest