如何从输出aws cli --query中提取单个值

时间:2019-11-27 02:47:08

标签: zsh aws-cli

我正在使用zsh运行此查询:

output=$(aws sagemaker describe-training-job \
    --training-job-name $name \
    --query '{S3ModelArtifacts:ModelArtifacts.S3ModelArtifacts,TrainingImage:AlgorithmSpecification.TrainingImage,RoleArn:RoleArn}')

但是对于我的一生,我似乎无法单独提取S3ModelArtifactsTrainingImageRoleArn

似乎既不是数组也不是关联数组?但是当我执行echo $output时,它看起来像是json格式。

最终,我只想做类似var=${output[TrainingImage]}的事情,但这只是给了我整个响应,而不仅仅是TrainingImage值。

任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

您可以使用命令行工具jq来解析json输出,如下所示:

(19-11-27 10:25:38) <0> [~] printf %s "$output" | jq '.TrainingImage'
"123456789877.dkr.ecr.eu-west-1.amazonaws.com/kmeans:1"

或者,因为这是一个非常简单的查询,所以您可以使用sed

(19-11-27 10:25:43) <0> [~] printf %s "$output" | sed -n -e 's/^.*TrainingImage"://p'
 "123456789877.dkr.ecr.eu-west-1.amazonaws.com/kmeans:1",

这是sed命令的explanation