Как получить только поля ID Name и Networks из списка Openstack nova

awk sed openstack openstack-nova

2257 просмотра

3 ответа

Мой список новых звезд дает вывод как:

            #  nova list
            +--------------------------------------+---------------+--------+------------+-------------+-----------------------------------------------------------------------------------------+
            | ID                                   | Name          | Status | Task State | Power State | Networks                                                                                |
            +--------------------------------------+---------------+--------+------------+-------------+-----------------------------------------------------------------------------------------+
            | 0017050b-62ba-475e-b598-4638d4293250 | VNFM-POC      | ACTIVE | -          | Running     | vnfm_net_1=172.16.10.10, 10.10.72.12                                                    |
            | ff21d7c9-dc92-4256-ae49-49aa54c6a67b | VNFM_Shreyans | ACTIVE | -          | Running     | vnfm_net_1=172.16.10.8, 10.10.72.20                                                     |
            | 3f0a1188-c151-4e5e-9930-969d0423601b | dsc-test-3    | ACTIVE | -          | Running     | dsc-sig=172.16.17.15, 10.10.72.15; dsc-InterInstance=172.16.18.15; dsc-OAM=172.16.16.20 |
            +--------------------------------------+---------------+--------+------------+-------------+-----------------------------------------------------------------------------------------+

Я хочу извлечь только имя сети.

#  nova list | sed 's/ //g'| cut -d'|' -f 2,3,7
+--------------------------------------+---------------+--------+------------+-------------+-----------------------------------------------------------------------------------------+
ID|Name|Networks
+--------------------------------------+---------------+--------+------------+-------------+-----------------------------------------------------------------------------------------+
0017050b-62ba-475e-b598-4638d4293250|VNFM-POC|vnfm_net_1=172.16.10.10,10.10.72.12
ff21d7c9-dc92-4256-ae49-49aa54c6a67b|VNFM_Shreyans|vnfm_net_1=172.16.10.8,10.10.72.20
3f0a1188-c151-4e5e-9930-969d0423601b|dsc-test-3|dsc-sig=172.16.17.15,10.10.72.15;dsc-InterInstance=172.16.18.15;dsc-OAM=172.16.16.20
+--------------------------------------+---------------+--------+------------+-------------+-----------------------------------------------------------------------------------------+

Проблема: мой формат таблицы испорчен. Как получить только поля ID Name и Networks, как показано ниже.

+--------------------------------------+---------------+-----------------------------------------------------------------------------------------+
| ID                                   | Name          | Networks                                                                                   |
+--------------------------------------+---------------+-----------------------------------------------------------------------------------------+
| 0017050b-62ba-475e-b598-4638d4293250 | VNFM-POC      | vnfm_net_1=172.16.10.10, 10.10.72.12                                                    |
| ff21d7c9-dc92-4256-ae49-49aa54c6a67b | VNFM_Shreyans | vnfm_net_1=172.16.10.8, 10.10.72.20                                                     |
| 3f0a1188-c151-4e5e-9930-969d0423601b | dsc-test-3    | dsc-sig=172.16.17.15, 10.10.72.15; dsc-InterInstance=172.16.18.15; dsc-OAM=172.16.16.20 |
+--------------------------------------+---------------+-----------------------------------------------------------------------------------------+

ИЛИ ЖЕ

ID          0017050b-62ba-475e-b598-4638d4293250
Name        VNFM-POC
Networks    vnfm_net_1=172.16.10.10,10.10.72.12

ID          ff21d7c9-dc92-4256-ae49-49aa54c6a67b
Name        VNFM_Shreyans
Networks    vnfm_net_1=172.16.10.8,10.10.72.20

ID          3f0a1188-c151-4e5e-9930-969d0423601b
Name        dsc-test-3
Networks    dsc-sig=172.16.17.15,10.10.72.15;dsc-InterInstance=172.16.18.15;dsc-OAM=172.16.16.20
Автор: samir Источник Размещён: 08.11.2019 11:29

Ответы (3)


2 плюса

Решение
$ nova list | awk -F'|' '/\|/ && !/ID/{print "ID\t"$2"\nName\t"$3"\nNetworks"$7"\n"}'
ID   0017050b-62ba-475e-b598-4638d4293250 
Name     VNFM-POC      
Networks vnfm_net_1=172.16.10.10, 10.10.72.12                                                    

ID   ff21d7c9-dc92-4256-ae49-49aa54c6a67b 
Name     VNFM_Shreyans 
Networks vnfm_net_1=172.16.10.8, 10.10.72.20                                                     

ID   3f0a1188-c151-4e5e-9930-969d0423601b 
Name     dsc-test-3    
Networks dsc-sig=172.16.17.15, 10.10.72.15; dsc-InterInstance=172.16.18.15; dsc-OAM=172.16.16.20 

Обратите внимание, что приведенная выше команда будет иметь дополнительную пустую строку в конце файла ...

Лучшее, что я мог сделать с другим форматом:

$ nova list | awk -F'|' '/\|/{print "|"$1"|"$2"|"$3"|"$7"|"} /+-/{print}'
            +--------------------------------------+---------------+--------+------------+-------------+-----------------------------------------------------------------------------------------+
|            | ID                                   | Name          | Networks                                                                                |
            +--------------------------------------+---------------+--------+------------+-------------+-----------------------------------------------------------------------------------------+
|            | 0017050b-62ba-475e-b598-4638d4293250 | VNFM-POC      | vnfm_net_1=172.16.10.10, 10.10.72.12                                                    |
|            | ff21d7c9-dc92-4256-ae49-49aa54c6a67b | VNFM_Shreyans | vnfm_net_1=172.16.10.8, 10.10.72.20                                                     |
|            | 3f0a1188-c151-4e5e-9930-969d0423601b | dsc-test-3    | dsc-sig=172.16.17.15, 10.10.72.15; dsc-InterInstance=172.16.18.15; dsc-OAM=172.16.16.20 |
            +--------------------------------------+---------------+--------+------------+-------------+-----------------------------------------------------------------------------------------+
Автор: Sundeep Размещён: 20.08.2016 03:35

2 плюса

Проще всего использовать --fieldsкак в:

$ nova list --fields name,networks
+--------------------------------------+--------------------------------------------+--------------------------------------------------------------+
| ID                                   | Name                                       | Networks                                                     |
+--------------------------------------+--------------------------------------------+--------------------------------------------------------------+
| 1be7f564-dbf2-4335-82c9-63c82004653d | Intransigent Locomotive Server             | public=2607:f298:5:101d:f816:3eff:fec6:6e9c, 208.113.135.120 |
| 040751d1-c4c5-47aa-8dec-1d69a468be1c | hnxhdkwskrvwvdwr                           | public=2607:f298:5:101d:f816:3eff:fe50:124, 208.113.130.11   |
+--------------------------------------+--------------------------------------------+--------------------------------------------------------------+

И если вы предпочитаете использовать более новый клиент, openstack client, варианты:

 openstack server list -c Name -c Networks -f html

-fпозволяет выбрать выходной формат CSV, HTML, JSON, таблицы, значение, YAML.

Автор: Stefano Maffulli Размещён: 23.08.2016 09:39

0 плюса

$ awk -F' *[|] *' -v OFS='\t' '/+--/{next} c++{print h[2],$2 ORS h[3],$3 ORS h[7],$7 ORS; next} {split($0,h)}' file
ID      0017050b-62ba-475e-b598-4638d4293250
Name    VNFM-POC
Networks        vnfm_net_1=172.16.10.10, 10.10.72.12

ID      ff21d7c9-dc92-4256-ae49-49aa54c6a67b
Name    VNFM_Shreyans
Networks        vnfm_net_1=172.16.10.8, 10.10.72.20

ID      3f0a1188-c151-4e5e-9930-969d0423601b
Name    dsc-test-3
Networks        dsc-sig=172.16.17.15, 10.10.72.15; dsc-InterInstance=172.16.18.15; dsc-OAM=172.16.16.20
Автор: Ed Morton Размещён: 20.08.2016 04:56
Вопросы из категории :
32x32