【发布时间】:2016-11-09 10:21:28
【问题描述】:
我想在 open-stack 命令输出中解析计算区域,如下所示
+-----------------------+----------------------------------------+
| Name | Status |
+-----------------------+----------------------------------------+
| internal | available |
| |- controller | |
| | |- nova-conductor | enabled :-) 2016-07-07T08:09:57.000000 |
| | |- nova-consoleauth | enabled :-) 2016-07-07T08:10:01.000000 |
| | |- nova-scheduler | enabled :-) 2016-07-07T08:10:00.000000 |
| | |- nova-cert | enabled :-) 2016-07-07T08:10:00.000000 |
| Compute01 | available |
| |- compute01 | |
| | |- nova-compute | enabled :-) 2016-07-07T08:09:53.000000 |
| Compute02 | available |
| |- compute02 | |
| | |- nova-compute | enabled :-) 2016-07-07T08:10:00.000000 |
| nova | not available |
+-----------------------+----------------------------------------+
我想解析结果如下,只取具有 nova-compute 的节点
Compute01;Compute02
我使用了以下命令:
nova availability-zone-list | awk 'NR>2 {print $2}' | grep -v '|' | tr '\n' ';'
但它会像这样返回输出
;internal;Compute01;Compute02;nova;;
【问题讨论】:
-
@Jens 结果与 ;internal;Compute01;Compute02;nova;; 相同
-
@Jens 这确实有效 nova availability-zone-list | awk 'NR>2 {打印 $2}' | grep -v '|' |grep -v '内部' |grep -v "nova" | tr '\n' ';'结果为 ;Compute01;Compute02;;。我想输出为';'分开,我不能只排除 nova,内部 bcoz 他们可能是别的东西,我想要一个具有 nova-compute 的节点
-
您可能应该使用 API 以机器可读的形式获取此输出。也许提交愿望清单错误报告以将其添加到
nova客户端。
标签: linux perl shell parsing openstack-nova