我想捕获以下文件的前8行,然后捕获NPU #等于7或3,NPU core等于1的所有字段。
RP/0/RP0/CPU0:xxxxx#show controllers npu voq-usage interface all instance all location 0/0/CPU0
33144 Tue Jun 4 xxxx
33145 -------------------------------------------------------------------
33146 Node ID: 0/0/CPU0
33147 Intf Intf NPU NPU PP Sys VOQ Flow VOQ Port
33148 name handle # core Port Port base base port speed
33149 (hex) type
33150 ----------------------------------------------------------------------
33151 Hu0/0/2/1 210 0 1 21 21 1024 4152 local 100G
33152 Hu0/0/2/47 218 7 0 1 701 1032 4152 local 100G
33153 Hu0/0/2/46 220 7 0 5 705 1040 4216 local 100G
33154 Hu0/0/2/45 228 7 0 9 709 1048 4280 local 100G
33155 Hu0/0/2/44 230 3 1 17 717 1056 4152 local 100G我可以使用以下完全不同的awk命令来完成此操作:
awk 'NR<9' filename.txt
awk '($4==7||$4==3) && $5==1' filename.txt我能得到一些关于如何将这些awk语句连接在一起的建议吗?或者甚至可能是一种更优雅的狂欢主义来实现这一点?
谢谢
发布于 2019-06-07 20:46:20
awk '(NR<9) || (($4~/^[73]$/) && ($5==1))' filename.txt发布于 2019-06-07 20:12:29
我建议使用||运算符,并对第二个条件进行分组:
awk 'NR<9 || (($4==7||$4==3) && $5==1)' filename.txt > newfilename.txt请参阅online demo
s="RP/0/RP0/CPU0:xxxxx#show controllers npu voq-usage interface all instance all location 0/0/CPU0
33144 Tue Jun 4 xxxx
33145 -------------------------------------------------------------------
33146 Node ID: 0/0/CPU0
33147 Intf Intf NPU NPU PP Sys VOQ Flow VOQ Port
33148 name handle # core Port Port base base port speed
33149 (hex) type
33150 ----------------------------------------------------------------------
33151 Hu0/0/2/1 210 0 1 21 21 1024 4152 local 100G
33152 Hu0/0/2/47 218 7 0 1 701 1032 4152 local 100G
33153 Hu0/0/2/46 220 7 0 5 705 1040 4216 local 100G
33154 Hu0/0/2/45 228 7 0 9 709 1048 4280 local 100G
33155 Hu0/0/2/44 230 3 1 17 717 1056 4152 local 100G"
awk 'NR<9 || (($4==7||$4==3) && $5==1)' <<< "$s"输出:
RP/0/RP0/CPU0:xxxxx#show controllers npu voq-usage interface all instance all location 0/0/CPU0
33144 Tue Jun 4 xxxx
33145 -------------------------------------------------------------------
33146 Node ID: 0/0/CPU0
33147 Intf Intf NPU NPU PP Sys VOQ Flow VOQ Port
33148 name handle # core Port Port base base port speed
33149 (hex) type
33150 ----------------------------------------------------------------------
33155 Hu0/0/2/44 230 3 1 17 717 1056 4152 local 100G发布于 2019-06-07 20:15:19
你能再试一种方法吗?
awk 'NR<=9{print;next} ($4==7||$4==3) && $5==1' Input_filehttps://stackoverflow.com/questions/56494026
复制相似问题