bash - 为什么 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 脚本中。
解决方案
因为每个数据之间有几个“”。
更简单的方法是将空格剥离到一个空格并剪切:
docker image ls | grep name1 | tr -s ' ' | cut -d " " -f 3
编辑: chepner 的答案是 prefere,但我让这个人活着,因为最初的问题是 "why"。
推荐阅读
- javascript - 我需要在 Google 表格上重新定义脚本
- maven - 好友 devops 构建失败:java11
- azure - 个人帐户出现在 Azure AD 中
- c# - IronPython:从 c# 启动 .py 脚本时出错
- android - `.db` 文件在调用 Room.createFromAsset("initialData.db") 时应该采用什么格式?
- python - 无论操作系统如何,如何在 python 中连接 oracle 数据库
- elasticsearch - 重复的 ElasticSearch 文档
- kubernetes - kubenrates (k8s) nd POD OOMKILLED 在非工作时间且没有内存峰值
- python - 如何在北极立体投影中添加更多经度/纬度线
- git - 如何保存或“隐藏”最后一次提交?