regex-如何检查docker实例是否在Bash中运行

具有docker ps -a

CONTAINER ID        IMAGE                         COMMAND                  CREATED             STATUS                    PORTS                    NAMES

56489a32cb8c        83132b61eccf                  "bash"                   41 hours ago        Exited (0) 41 hours ago                            naughty_jang
4b4933b40175        83119b65eccf                  "bash"                   41 hours ago        Exited (0) 41 hours ago                            suspicIoUs_mcnulty
3149e612f9f8        83119b6143cf                  "sh"                     43 hours ago        Exited (0) 41 hours ago                            thirsty_mestorf

我想匹配状态和名称列以检查哪个是实例状态,因此从列索引1开始的第5列和第7列.

假设我使用制表符分隔值

docker ps -a | awk -FS $'\t' '{print $5,$7}'

要么

docker ps -a | awk 'BEGIN {FS="\t"}; {print $5,$7}'

但这不起作用,同时将默认的空白字符保留为FS

docker ps -a | awk 'BEGIN {FS=" "}; {print $5,$7}'

所以我试图像这样一次匹配一列

awk -F$" " -v COLT=$1 '
        NR==1 {
                for (i=1; i<=NF; i++) {
                        if ($i==COLT) {
                                title=i;
                        }
                }
        }
        NR>1 {
                if (i=title) {
                        print $i
                }
        }
'

应该在您执行的脚本中包含此内容

docker ps -a | ./status.sh NAMES

但由于匹配的制表符空格错误,因此无法使用.
这里的问题是docker ps -a的输出有空格,而不是制表符,因此空格数量可变,因此我应该使用特定的正则表达式作为FS字段分隔符,如here所述,但我不知道如何操作.

最佳答案
一个简单的docker ps –format“ {{.ID}} {{.Command}} {{.Status}}”将更易于解析,因为它只有三列.

使用formatting,您只能显示所需的基本信息,并在每列之间使用所需的分隔符.

OP loretoparisi建议in the comments

docker ps -a --format "{{.ID}}\t\"{{.Status}}\"\t{{.Names}}" | cut -f2 -d$'\t' 

to get col 2,or you could do:

docker ps -a --format "{{.ID}}\t\"{{.Status}}\"\t{{.Names}}" | awk -F$"\t" '{printf "%s|%s|%s\n",$1,$2,$3}' 

to rule them all!

相关文章

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Li...
1、什么是docker?答:docker是开源的应用容器引擎;开发人员把他们的应用及依赖包打包发布到容器当中。...
1、什么是namespace? 答:名称空间,作用隔离容器 2、namespace隔离有那些? 答:ipc:共享内存、消息队...
1、Docker能在非Linux平台(Windows+MacOS)上运行吗? 答:可以 2 、如何将一台宿主机的docker环境...
环境要求: IP hostname 192.168.1.1 node1 项目规划: 容器网段:172.16.10.0/24 NGINX:172.16.10.10...
文档上传地址:https://files.cnblogs.com/files/lin-strive/07-docker%E8%B7%A8%E4%B8%BB%E6%9C%BA%E7...