我在数组@bgp_status中有以下结果
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
::100:1:1:2 4 100 6 6 21 0 0 00:00:15 10
::200:1:1:2 4 200 6 6 21 0 0 00:00:10 10
现在我想知道State / pfxRcd的值是多少?这是10点。我想为:: 100:1:1:2和:: 200:1:1:2邻居提取状态值。
任何建议将不胜感激。提前谢谢
答案 0 :(得分:0)
假设你的意思是每一行都是数组中的一个条目,那么像这样的代码将起作用:
my @bgp_status = ("Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd",
"::100:1:1:2 4 100 6 6 21 0 0 00:00:15 10",
"::200:1:1:2 4 200 6 6 21 0 0 00:00:10 10");
my @states = ();
for my $line (@bgp_status) {
if ($line =~ /^::\d/) { # Check if it's an IP row
$line =~ /(\d+$)/; # Assuming last # in row is state
my $state = $1;
push(@states, $state);
}
}
print @states;
您可以将其重构为更短或更强大,或使用某种数据结构来保存IP:State关联。我想把它作为练习留给读者。