Как заказать Word-Match через скрипт Bash

Команда ADS2 CLS Создание создает следующий вывод:

cluster established ...
    nodes {
        node {
            name = "fdt-c-agx-0002";
            address = "http://172.16.11.89:9011/";
            state = "3";
        }
        node {
            name = "FDT-C-VM-0094";
            address = "http://172.16.11.49:9011/";
            state = "3";
        }
    }

Что я пытаюсь, это найти имя каждого узла и его статуса, назначайте каждому переменной и распечатайте их, чтобы выводиться как:

Node-1 имя имеет состояние состояние # это соответствует К первому узлу

NODE-2 имя имеет состояние состояние # это соответствует второму узлу

, поэтому я начал с Greep, как Status-Nod1 = «$ (ADS2 CLS Создать | GREP State | Cut -D '' '-F 2)" & name-nod1 = "$ (ads2 cls class create | grep name | cut --d' '' -ff 2) ".

Это работает, однако, находит все совпадения с состоянием и« имя »и, таким образом, возвращает

3
3
fdt-c-agx-0002
FDT-C-VM-0094

так, как я могу вывести матч в порядке записи, чтобы каждый узел Соответствует своему штату

0
задан 27 March 2021 в 18:45

1 ответ

Это не самый эффективный код, но он справится с задачей.

#! /bin/bash

mapfile -t name < <(ads2 cls create | grep -Po "name = \"\K.*(?=\")")
mapfile -t state < <(ads2 cls create | grep -Po "state = \"\K.*(?=\")")

a=0
while [[ $a -gt -1 ]]
do
        echo "NODE-$(echo $a+1 | bc) ${name[$a]} has the state ${state[$a]}"
        a=$(echo "$a+1" | bc)
        if [[ -z ${name[$a]} ]]
        then
                a=-2
        fi
done

Вставьте его в файл .sh (например, node_status.sh), сделайте его исполняемым (sudo chmod a+x node_status. sh), а затем запустите его (путь/к/скрипту/node_status.sh или ./node_status.sh, если вы находитесь в каталоге, в котором расположен скрипт). Хорошо то, что когда вы добавляете узел(ы) (NODE-3 NODE-4 и т.д.), скрипт может справиться с этим и даст вам имя и статус каждого узла (а не только первых двух). Вы можете иметь 100 узлов, и он выдаст имя и статус всех 100 узлов.

1
ответ дан 1 April 2021 в 23:01

Другие вопросы по тегам:

Похожие вопросы: