Автор Тема: как "выбрать" IP из строки?  (Прочитано 3342 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Duke

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 15
  • +0/-0
  • 0
    • Просмотр профиля
    • http://games.siberianet.ru
как "выбрать" IP из строки?
« : 24 Марта 2003, 08:40:40 »
Сразу оговорюсь, что регулярные выражения для меня чужды. Я тольк взялся с ними разбираться.

Задача такая.
Один скрипт пингует ийпишники сети, а информацию о "ответивших" записывает в текстовый файл. Вот несколько строк этого файла.

Host 217-106-130-10.siberianet.ru (217.106.130.10) appears to be up.
Host 217-106-130-12.siberianet.ru (217.106.130.12) appears to be up.
Host 217-106-130-13.siberianet.ru (217.106.130.13) appears to be up.
Host 217-106-130-15.siberianet.ru (217.106.130.15) appears to be up.

Другой маленький скриптик бонально читает эти строки из файла и выводит в окно браузера.

Подскажите регулярное выражение которое бы "выбирало" из каждой строки только IP?

Т.е. после его работы в браузере должен быть просто перечень IP-шников:

217.106.130.10
217.106.130.12
217.106.130.13
217.106.130.15

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
как "выбрать" IP из строки?
« Ответ #1 : 24 Марта 2003, 09:22:45 »
Поиск по форуму рулит.
2B OR NOT 2B = FF

Оффлайн Mog.

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 828
  • +0/-0
  • 0
    • Просмотр профиля
как "выбрать" IP из строки?
« Ответ #2 : 24 Марта 2003, 16:09:38 »
Читаешь файл в @dat и

for(@dat){ if(/\\(([\\d\\.]+)\\)/){print $1}}

Должно напечатать только ip

[off]Если не ошибаюсь :) [/off]
Все болезни от нервов, только сифилис от удовольствия

Оффлайн Duke

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 15
  • +0/-0
  • 0
    • Просмотр профиля
    • http://games.siberianet.ru
как "выбрать" IP из строки?
« Ответ #3 : 25 Марта 2003, 07:38:21 »
Спасибо, я разобрался. Всё оказалось оч просто :)

foreach (@ar_allmail) {
#Host 217-106-130-206.siberianet.ru (217.106.130.206) appears to be up.
   ($host, $domen, $ip, $a, $b, $c, $d) = split;
   if ($host eq \'#\') {next;}
   ($ip2)=$ip=~/\\((\\d+\\.\\d+\\.\\d+\\.\\d+)\\)/;
    print "$ip2
";
}

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28