使用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
我希望匹配 STATUS
和 NAMES
列以检查实例状态,因此应从索引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
字段分隔符,如此处所述,但我无法弄清楚如何做到这一点。
NAMES
可以是随机生成的或固定的,因此我想匹配所有名称,而STATUS
列类似于[a-Z]+ (\d) (\d\d 小时前)
(仅为简化...)或Created
等。 - loretoparisidocker ps -a
命令的输出。 - loretoparisidocker inspect -f "{{.State.Status}}" container-name
。 - Henry