2016-08-20 21 views
2

我的新星列表,给出输出:如何从OpenStack的新星只列出ID名称和网络领域

  # 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 | 
      +--------------------------------------+---------------+--------+------------+-------------+-----------------------------------------------------------------------------------------+ 

我想只提取ID名称的网络。

# 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 
+--------------------------------------+---------------+--------+------------+-------------+-----------------------------------------------------------------------------------------+ 

问题: 我的表格式混乱up.how只得到ID名称和网络领域,如下面。

+--------------------------------------+---------------+-----------------------------------------------------------------------------------------+ 
| 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 | 
+--------------------------------------+---------------+-----------------------------------------------------------------------------------------+ 

OR

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 

回答

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 | 
      +--------------------------------------+---------------+--------+------------+-------------+-----------------------------------------------------------------------------------------+ 
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 
1

最简单的就是用--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的客户端,选项有:

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

-f允许您选择输出格式CSV,HTML,JSON,表,值,YAML。

相关问题