我正在使用zsh
运行此查询:
output=$(aws sagemaker describe-training-job \
--training-job-name $name \
--query '{S3ModelArtifacts:ModelArtifacts.S3ModelArtifacts,TrainingImage:AlgorithmSpecification.TrainingImage,RoleArn:RoleArn}')
但是对于我的一生,我似乎无法单独提取S3ModelArtifacts
,TrainingImage
和RoleArn
。
似乎既不是数组也不是关联数组?但是当我执行echo $output
时,它看起来像是json格式。
最终,我只想做类似var=${output[TrainingImage]}
的事情,但这只是给了我整个响应,而不仅仅是TrainingImage值。
任何帮助表示赞赏。
答案 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。