这个正则怎么写?

这个正则怎么写?

bridge name             bridge id                      STP enabled       interfaces
br0                      8000.0015e9439851                no                 eth0
                                                                                         eth1
br1                      8000.000000000000                no


网桥br0有两个物理接口,eth0和eth1
但eth1是在第二行显示的

网桥br1没有分配物理接口

怎么才能匹配到eth1呢?

例如,我想要的结果
br0, 8000.0015e9439851, no, eth0 eth1

是要匹配eth1的那一行还是什么?
不好意思,没说清楚

我是想匹配出br0包含的物理接口
eth0 eth1 都要
我觉着,其实吧,你不应该想着去分析 brctl 的输出是什么,而应该想着去分析 brctl 的数据是从哪里来的……

当然了,文本过滤也是可以做到的,只不过我不太希望这么做,所以就不给你介绍了。

BTW:不要什么事都想着一行正则表达式搞定,那样就算你写得出来,别人也看不明白。该循环就循环吧!

多谢版主教诲
请教版主,我用循环,只在br+数字开头的行找,但关键是怎么获取eth1?

#!/usr/bin/perl

use strict;
use warnings;

my $brctl = '/usr/local/sbin/brctl';

open(PIPE, "$brctl show |") or die $!;
      while ( <PIPE> ) {
            if ( /^br\d+/ ) {
               my ($name, $id, $stp, $face) = ($_ =~ /^(br\d+)\s+(\S+)\s+(\S+)\s+([\S|\S]+)/);
               print "$name, $id, $stp, $face\n";
           }
      }
close(PIPE) or die $!;


输出是
br0, 8000.0015e9439851, no, eth0
br1, 8000.000000000000, no,

else


QUOTE:
原帖由 flw 于 2008-8-7 16:04 发表
else

那如果br0包括更多的接口,岂不是要用一个数组存这些接口的名字?

如: br0     8000.0015e9439851   no      eth0
                                                       eth1
                                                       eth2
                                                       eth3
       br1     8000.000000000000   no

BTW, 我不是只在终端上显示,要用CGI显示到网页上

一个数组多少钱啊?


QUOTE:
原帖由 flw 于 2008-8-7 16:24 发表
一个数组多少钱啊?



就用数组了,多谢教诲