如何通过 bash 脚本排序单词匹配

How to order the word-match via bash script

命令 ads2 cls create 产生以下输出:

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";
        }
    }

我想要做的是找到每个节点的 name 及其状态,将每个节点分配给一个变量并打印它们,以便输出看起来像:

NODE-1 name有一个状态state #这符合第一个节点

NODE-2 name有一个状态state #这符合第二个节点

所以我开始使用像 status-nod1="$(ads2 cls create | grep state | cut -d '"' -f 2)" & name-nod1="$(ads2 cls create | grep name | cut -d '"' -f 2)" 这样的 grep。

这有效,但是会找到所有与 state 和 'name' 匹配的项,因此会找到 returns

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

那么我怎样才能按写入顺序输出匹配项,以便每个节点都匹配其状态

如果您对州和姓名都进行 grep,您将按顺序获得详细信息

ads2 cls create | grep '\(state\|name\) =' | cut -d '"' -f 2 \
| while read name status ; do ...