我在Perl搜索字符串中缺少什么使它匹配?

时间:2011-08-22 20:24:44

标签: regex perl

我有一个大文件,里面装满了我要解析特定数据的文本行。我想要的数据的示例行是:

results:    IF-MIB::ifInOctets.9 = Counter32: 23212027

其中Counter32的值发生变化,if * .Octets。\ d发生变化。如果需要,我不介意需要多个'if'语句来获取数据,但我无法确定我缺少的是什么。我已经检查了perl参考文档和正则表达式帮助文档,我无法看到我遗漏的内容。

这是我所拥有的样本(其基本形式适用于我正在进行的其他项目):

my $line = $_;
#print $line;
if ($line =~ "/result.*ifOutOctets\.6.* = counter32/i"){
print $line; #this is here only for testing to see if I am matching the line since the file is not filling in

我尝试在if($ line =〜“”)位置使用以下行,我确信我遗漏了一些简单的但却无法找到它的内容:

/result(.*)ifOut(.*) = counter32/i
/result.*ifOut.* = counter32: (\d*)/i
/result.*IF-MIB::ifOut.*(\d*) = counter32: (\d*)/i

我这里有一台Mac用于通过grep进行测试,并且使用此表单成功返回结果:

grep -i "result.*ifOutOctets.* = counter32" fileName

1 个答案:

答案 0 :(得分:3)

在Perl中,你没有引用正则表达式。更正后的代码是:

my $line = $_;
if ($line =~ /result.*ifOutOctets\.6.* = counter32/i)
{
    # do whatever
}