Gcloud json 格式获取不到机器类型的完整 url

Gcloud json format get not the full url of machine tpye

运行 gcloud 查询并尝试获取 json 的输出以仅包含实际机器类型而不是完整的 url.

gcloud compute instances list --project $projectname --format=json | jq -r '.[]| .name +","+.machineType'

打印为

$instancename,https://www.googleapis.com/compute/v1/projects/$projectname/zones/europe-west2-a/machineTypes/n1-standard-4

它目前打印出完整的机器类型,想知道是否有人知道缩短 url 以仅将机器类型作为字符串而不是完整的 url.

我也有这个 sed 来清除格式,但是如何在不删除名称的情况下仅应用于第二个字符串 sed 's@.*/@@'

提前致谢

编辑:在 jq

中发现了一些 split 的潜力
gcloud compute instances list --project $projectname --format=json | jq -r '.[]|(.machineType|split("https://www.googleapis.com/compute/v1/projects/"))'

有多种方法可以做到这一点,但我建议您只使用 awk,因为您可以使用 , 然后 / 作为分隔符命令的输出。

您可以根据您分享的命令使用类似这样的东西: gcloud compute instances list --project $projectname --format=json | jq -r '.[]| .name +","+.machineType' | awk -F',' '{print "/"}' | awk -F'/' '{print "="}'.

你会得到 $instance-name=$machine-type

希望你觉得这有用。

查看 Cloud SDK (gcloud) 主题格式:

https://cloud.google.com/sdk/gcloud/reference/topic/formats https://cloud.google.com/sdk/gcloud/reference/topic/projections#scope

gcloud compute instances list \
--project=${PROJECT} \
--format="value(machineType.scope(machineTypes))"

NOTE You asked how to do this with gcloud and this is the way. @rsalinas' point is good. There's a philosophy that tech should "do one thing well" and gcloud's formatting|filtering break this. Personally, I prefer to gcloud ... --format=json | jq . and use jq to process gcloud output partly because I can use the same theory with kubectl, doctl etc. etc. etc. awk is another magical tool that is generally useful.