![]() |
Проблема с регуляркой (Perl)
Добрый день.
Есть скрипт на Perl'e, которым я собираю инфу с машины. Столкнулся с проблемой при разборе файла /etc/hosts, а именно с регуляркой которая будет выцеплять нужный мне IP. Файл hosts примерно выглядит так: Код:
10.10.10.101 msk-pc-101-rv1.dome.name msk-rv-101-rv1 Побывал с начало egrep Вот часть скрипта которая не работает: Код:
unless(`cat /etc/hosts` =~ m/ (10\.[0-9]+\.[0-9]+\.[0-9]+)\[ +]\[a-zA-Z0-9]+\-\[a-zA-Z]+\-\[bc1]/) { Есть идеи что можно сделать? P.S. регулятора которая в данный момент в скрипте 100 раз видоизмененная, может показаться полным бредом :). |
Код:
\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}(?=.*bc\d) |
https://regex101.com/r/4mLUCx/2 (флаг g для наглядности). Подмасок нет, будет $&.
|
Да спасибо, обе регулярки отрабатывают корректно.
Но эта часть скрипта почему то, не отрабатывает. Вот в этом же скрипте, данная часть отрабатывает корректно: Код:
unless(`ifconfig` =~ m/inet (10\.[0-9]+\.[0-9]+\.[0-9]+)/) { Код:
unless (`cat /etc/hosts` =~ m/ ^10\.\d+\.\d+\.\d+(?=\h+\V+?bс[0-9]+)/) { |
При таком варианте возвращает пустату, но ошибки нет
Код:
unless (`cat /etc/hosts` =~ m/ \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}(?=.*bc\d)/) { |
https://rextester.com/UOWM34553 Один IP нужен или все?
|
Вообщем один, а как он себя будет вести если вдруг 2 найдет?
|
для мультипоиска нужен массив и флаг g
|
я не знаю почему, но заработало только после того как я добавил в:
Код:
'cat /etc/hosts | egrep '?bc[0-9]+|?BC[0-9]+' |
Можно, наверное, даже так:
Код:
egrep '?bc[0-9]+|?BC[0-9]+' /etc/hosts |
Время: 16:33. |
Время: 16:33.
© OSzone.net 2001-