我正在尝试获取特定图像的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
...但它没有,它给出了一个空白。我错过了什么?
这个NEEDS是一个简单的shell脚本,所以我可以将它嵌入到Jenkinsfile管道中的Groovy脚本中。
答案 0 :(得分:4)
最好的办法是让docker images ls
完成所有工作,而不是解析其默认输出。
$ docker image ls --filter "reference=*name1*" -q
4a625fb9a2a4
--filter
取代grep
命令,-q
取代cut
。还有一个--format
选项可以更精确地控制输出,但-q
实际上只是--format '{{.ID}}'
的快捷方式。
如果由于某种原因,--filter
无法满足您的需求,您始终可以使用--format
生成更容易被其他命令解析的输出。
答案 1 :(得分:2)
因为每个数据之间有几个“”。
更简单的方法是将空格剥离到一个空格并剪切:
int oldNum = savedInstanceState.getInt("savedNum");
答案 2 :(得分:2)
我认为<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" rel="stylesheet"/>
<link href="https://fonts.googleapis.com/css?family=Dosis:300,400,600,700,800" rel="stylesheet">
<section class="centerpage">
<div class="container-fluid">
<div class="row container-flex">
<div class="col shirt-box">
sdfsdfs sdf sdf sdf sdf sdf
</div>
<div class="col shirt-box">
sdfsdfs sdf sdf sdf sdf sdf
</div>
</div>
</div>
</section>
更适合拆分列式输出。例如:
awk
或者,您可以使用$ docker image ls | awk '/fedora/ {print $3}'
cc510acfcd70
5292e27c6dac
422dc563ca32
改进输出,以便更好地使用--format
:
cut
答案 3 :(得分:0)
您可以使用“sed”命令转换“docker image ls”的输出,用未使用的char替换空格集,稍后可以使用“cut”命令来获取您感兴趣的字段。例如:
$ docker image ls | sed "s/ */#/g" | cut -f 3 -d "#"
在上面的示例中,您用'#'字符替换空格组,然后使用“cut”命令打印用-f编号的预期字段。