从输出中删除列标题

时间:2016-03-02 12:59:12

标签: shell awk sed grep

我正在运行以下命令,输出如下所示

和nova list

 +--------------------------------------+---------------------------------------------------------------------+----------------+--------------------------------------------------+
| id                                   | name                                                                | cidr           | allocation_pools                                 |
+--------------------------------------+---------------------------------------------------------------------+----------------+--------------------------------------------------+
| 1865fd7d-8971-4b2a-aaa3-c810189c2363 | test-inter-netwk                                                    | 192.168.1.0/24 | {"start": "192.168.1.2", "end": "192.168.1.254"} |
| 20214812-48f9-4938-bbd3-1b54cd796425 | App-Mgmt-subnet                                                     | 10.20.0.0/24   | {"start": "10.20.0.2", "end": "10.20.0.254"}     |
| 7ab22397-e6a9-4a3d-96f0-9ebbce638f1e | vms2.1-net                                                          | 192.168.0.0/24 | {"start": "192.168.0.2", "end": "192.168.0.254"} |
| 8f97fc5e-53c6-4f29-9e4e-04f38a283452 | ddddd                                                               | 10.24.0.0/24   | {"start": "10.24.0.2", "end": "10.24.0.254"}     |
| 990b338c-c980-456e-ade1-fc1a90f233e5 | Orch-Mgmt-subnet                                                    | 10.32.1.0/24   | {"start": "10.32.1.2", "end": "10.32.1.254"}     |
| f386aca1-4c18-4b8e-9df7-a70111dea849 | TRANSIT-NEXTIP-Skyfall-eb07721aa407423e83e9641855f51e35-mseg-SUBNET | 10.22.0.0/24   | {"start": "10.22.0.2", "end": "10.22.0.254"}     |
+--------------------------------------+---------------------------------------------------------------------+----------------+--------------------------------------------------+

命令

neutron subnet-list | awk -F "|" '{print $2}' 

输出 输出以两个空行和文本" id"开头。和空行。我只需要id我正在努力删除前几行。

 id

 1865fd7d-8971-4b2a-aaa3-c810189c2363
 20214812-48f9-4938-bbd3-1b54cd796425
 7ab22397-e6a9-4a3d-96f0-9ebbce638f1e
 8f97fc5e-53c6-4f29-9e4e-04f38a283452
 990b338c-c980-456e-ade1-fc1a90f233e5
 f386aca1-4c18-4b8e-9df7-a70111dea849

2 个答案:

答案 0 :(得分:1)

您可以在awk语句中添加条件:

neutron subnet-list | awk -F "|" 'NR>2{print $2}' 

只是说“如果记录编号(NR)大于2,则继续打印。

如果您想在id之后删除空白,则可以添加:

neutron subnet-list | awk -F "|" 'NR>2 && NR!=4{print $2}' 

这增加了第一个条件“和记录号不是4”

您也可以删除任何空白$2字段以保持简单:

neutron subnet-list | awk -F "|" '$2!=""{print $2}'

答案 1 :(得分:0)

使用sed仅打印匹配的lins(-n选项和p结尾) 在|之后,在该行的开头查找匹配项 使用ip搜索以至少3个非空格开头的字符串(跳过[^ ]\{3\}但可能与其他中子输出有问题)。 添加下一个字符,直到要在\(..\)中记住的字符串中的空格 使用.*丢弃剩余的字符 将第一个(也是唯一一个)记住的字符串放回\1

neutron subnet-list |sed -n 's/^| \([^ ]\{3\}[^ ]*\).*/\1/p'