首页 > 解决方案 > 为什么 cut 命令不适用于“docker image ls”命令?

问题描述

我正在尝试获取某个图像的 docker 图像 ID,所以我这样做了

$ docker image ls

REPOSITORY                                                          TAG                 IMAGE ID            CREATED             SIZE
123456789012.dkr.ecr.us-east-1.amazonaws.com/some-name1             60                  4a625fb9a2a4        5 hours ago         3.97GB
987654321012.dkr.ecr.us-east-1.amazonaws.com/some-other-name2       365                 59b27e46effc        6 days ago          3.98GB

我希望这会给我图像ID,即在这种情况下为4a625fb9a2a4 ...

$ docker image ls | grep name1 | cut -d " " -f3

...但它没有,它给出了一个空白。我错过了什么?

这需要是一个简单的 shell 脚本,所以我可以将它嵌入到 Jenkinsfile 管道中的 Groovy 脚本中。

标签: bashshell

解决方案


因为每个数据之间有几个“”。

更简单的方法是将空格剥离到一个空格并剪切:

docker image ls | grep name1 | tr -s ' ' | cut -d " " -f 3

编辑: chepner 的答案是 prefere但我让这个人活着,因为最初的问题是 "why"


推荐阅读