perl正则表达式提取ip从路由器show输出

Ker*_*y82 1 regex perl

我有路由器命令的输出:

Interface              IP-Address      OK? Method Status                Protocol
POS0/0/0               10.137.99.2    YES NVRAM  up                    up    
Run Code Online (Sandbox Code Playgroud)

我想找一个正则表达式来识别IP地址:

我尝试过:

if ( $_ =~ m/(.*?)\s*?(.*?)\s*?(.*?)\s*?(.*)/i ){
    #print "$1->$2\n";
    $sources{$2}=$1;
}
Run Code Online (Sandbox Code Playgroud)

然后$2用作ip.

但是,它不起作用; 我哪里错了?

Fra*_*o R 6

if ($_ =~ /\b(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\b/)
{
        print "IP: $1\n";
}
Run Code Online (Sandbox Code Playgroud)

如果您只想获取第二列,那么您应该使用split而不是正则表达式.获得字段#2:

@field = split(/ +/, $_);
print "$field[1]";
Run Code Online (Sandbox Code Playgroud)