【发布时间】:2019-09-17 04:45:26
【问题描述】:
以下命令具有以下输出:
[xr-vm_node0_RP0_CPU0:~]$show_snmp_interface_notif -x .*
ifName : Null0 ifIndex: 1
ifName : MgmtEth0/RP0/CPU0/0 ifIndex: 2
ifName : Loopback0 ifIndex: 5
ifName : Bundle-Ether25 ifIndex: 6
ifName : Bundle-Ether42 ifIndex: 7
ifName : Optics0/0/0/0 ifIndex: 8
ifName : Optics0/0/0/1 ifIndex: 9
...
ifName : HundredGigE0/0/1/3 ifIndex: 92
ifName : HundredGigE0/0/1/2 ifIndex: 93
ifName : HundredGigE0/0/1/1 ifIndex: 94
ifName : HundredGigE0/0/1/0 ifIndex: 95
ifName : Loopback1 ifIndex: 96
我想提取最后一列等于以下任何数字的行。
2 6 7 52 53 54 55 56 57 89 90 91
尝试: 1) 确认上述元素通过array[i] 正确存储和打印
[xr-vm_node0_RP0_CPU0:~]$show_snmp_interface_notif -x .* | awk 'BEGIN{split("2 6 7 52 53 54 55 56 57 89 90 91",array)}; END {for (i in array) print array[i]}'
2
6
7
52
53
54
55
56
57
89
90
91
2) 验证 $NF 匹配最后一列
[xr-vm_node0_RP0_CPU0:~]$show_snmp_interface_notif -x .* | awk '{print $NF}'
1
2
5
6
7
8
9
10
11
12
...
92
93
94
95
96
3) 编写了以下不打印任何内容的 awk 语句。我怀疑打印语句不正确。如果最后一列匹配 array[i] 中的任何指定元素,我们需要提取完整的行。
[xr-vm_node0_RP0_CPU0:~]$show_snmp_interface_notif -x .* | awk 'BEGIN{split("2 6 7 52 53 54 55 56 57 89 90 91",array)}; END {for (i in array); if(array[i]==$NF) { print $i }}'
[xr-vm_node0_RP0_CPU0:~]$show_snmp_interface_notif -x .* | awk 'BEGIN{split("2 6 7 52 53 54 55 56 57 89 90 91",array)}; END {for (i in array); if(array[i]==$NF) { print i }}'
【问题讨论】:
标签: awk