Чего мне не хватает в этой строке поиска Perl, чтобы она соответствовала? - PullRequest
2 голосов
/ 23 августа 2011

У меня большой файл, полный текстовых строк, из которого я хочу разобрать определенные данные. Пример строки данных, которые я хочу:

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

, где изменяется значение Counter32 и изменяется if * .Octets. \ D. Я не возражаю против необходимости нескольких утверждений «если», чтобы получить данные, если это необходимо, но я не смог определить, что мне не хватает. Я проверил справочные документы по 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 Ответ

3 голосов
/ 23 августа 2011

В Perl вы не цитируете регулярное выражение.Исправленный код:

my $line = $_;
if ($line =~ /result.*ifOutOctets\.6.* = counter32/i)
{
    # do whatever
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...