当我使用这个 docker 命令时:
docker inspect 'name of my container' | grep sha256
Run Code Online (Sandbox Code Playgroud)
我得到这个回来:
"Image": "sha256:345hu5j3h53jk234",
Run Code Online (Sandbox Code Playgroud)
如何使用--cut -d 命令仅获取不带引号的sha256:345hu5j3h53jk234 ?
目前我正在尝试类似的事情:
docker inspect 'name of my container' | grep sha256 | cut -d ","-f2
Run Code Online (Sandbox Code Playgroud)
但它不起作用。
docker inspect与许多其他列表类型 Docker 命令一样,它采用一个--format选项,允许您使用 Gotext/template语言重新格式化结果。如果您只是想挑选简单的字段,这最有效:
docker inspect container-name -f '{{ .Image }}'
Run Code Online (Sandbox Code Playgroud)
与 JSON 等结构化文件相比,标准 shell 工具更倾向于面向行的文本文件。评论建议使用jq,这将是一个很好的工具。如果这确实不是一个选择,您可以使用sed (1)执行此操作:
docker inspect container-name | sed -ne 's/.*"Image": "\([^"]*\)",$/\1/p'
Run Code Online (Sandbox Code Playgroud)
sed进一步分解该命令:
sed -n导致默认情况下不打印行。s/RE/\1/p尝试将当前行与正则表达式进行匹配;如果是,则将该行替换为第一\(...\)组,然后打印它。.*"Image":通过 JSON 标记匹配任意文本"Image":。\(...\)捕获一个组进行\1替换。[^"]*匹配任意数量的非双引号字符。",$匹配双引号、逗号和行尾。除非您点头同意这个解释,否则我更喜欢docker inspect -f或jq方法。
| 归档时间: |
|
| 查看次数: |
7225 次 |
| 最近记录: |