如何从STDOUT获取第三行?

问题描述 投票:0回答:1

我有一个表格形式的STDOUT,内容如下:

$kubectl get postgresql

NAME                   TEAM        VERSION   PODS   VOLUME   CPU-REQUEST   MEMORY-REQUEST   AGE     STATUS
acid-minimal-cluster   acid        12        2      1Gi                                     2d16h   SyncFailed
acid-userdb            acid        12        2      5Gi      100m          100Mi            2d16h   SyncFailed
databaker-userdb       databaker   12        2      2Gi      100m          100Mi            2d16h   SyncFailed
databaker-users-db     databaker   12        2      2Gi      100m          100Mi            2d15h   Running

并且要获得具有NAME = *users-dbSTATUS = Running的行,这表示最后一行。

我正在尝试实现的是,检查数据库是否已成功部署。

在此编码块之前:

echo "Check if database $DB_NAME is correctly deployed"
for i in {1..3}; do
  if [ kubectl get postgresql $DB_NAME | egrep -q "$DB_NAME|Running" ] ; then
    echo "DB $DB_NAME successfully deployed"
    break
  elif [ $i -eq 3 ]; then
    echo "DB $DB_NAME not successfully deployed"
    exit 1
  fi
  sleep 3
done

我必须先选择右行。

如何编写bash脚本以使用NAME = *users-dbSTATUS = Running获得对应的行?

bash postgresql kubernetes
1个回答
1
投票

尝试

awk '$1~/users-db$/ && $9=="Running"'

$1 $9\ \

© www.soinside.com 2019 - 2024. All rights reserved.