如何通过 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 ...
命令 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 ...