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!

相关文章

最近一直在开发Apworks框架的案例代码,同时也在一起修复Apw...
最近每天都在空闲时间努力编写Apworks框架的案例代码WeText。...
在《Kubernetes中分布式存储Rook-Ceph部署快速演练》文章中,...
最近在项目中有涉及到Kubernetes的分布式存储部分的内容,也...
CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.ne...
CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.ne...