2015-03-28 1 views
-1

У меня есть следующий скрипт perl.perl удалить данные из массива с разделителем полей

#!/usr/bin/perl -w 
use strict; 
use warnings; 
my (@failhost); 
my %currblocked; 
my %addblocked; 
my $action; 

open (MYINPUTFILE, "/var/log/asterisk/messages") or die "\n", $!, "Does log file file exist\?\n\n"; 

while (<MYINPUTFILE>) { 
    my ($line) = $_; 
    chomp($line); 
    if ($line =~ m/\' failed for \'(.*?)\' - No matching peer found/) { 
     push(@failhost,$1); 
    } 
    if ($line =~ m/\' failed for \'(.*?)\' . Wrong password/) { 
     push(@failhost,$1); 
     print $1 . "\n"; 
    } 
} 
exit 0; 

Это результат следующего результата.

212.83.134.244:5065 
212.83.134.244:5063 
212.83.134.244:5092 
212.83.134.244:5109 
212.83.134.244:5080 
212.83.134.244:5110 
212.83.134.244:5096 
212.83.134.244:5093 
212.83.134.244:5089 
212.83.134.244:5073 
212.83.134.244:5101 
212.83.134.244:5072 
212.83.134.244:5092 
212.83.134.244:5094 
212.83.134.244:5076 
212.83.134.244:5080 
212.83.134.244:5081 
212.83.134.244:5094 
212.83.134.244:5077 
212.83.134.244:5096 
212.83.134.244:5069 
212.83.134.244:5097 
212.83.134.244:5101 

Я хочу удалить все номера портов, включая «:», просто хочу сохранить IP-адрес.

Желаемый результат был бы как этот

212.83.134.244 
212.83.134.244 
212.83.134.244 
212.83.134.244 
212.83.134.244 
212.83.134.244 
212.83.134.244 
212.83.134.244 
212.83.134.244 
212.83.134.244 
212.83.134.244 

Я был бы признателен, если кто-нибудь может вести меня, или показать мне, как это сделать?

Заранее спасибо.

ответ

0

изменить второй, если как этот

if ($line =~ m/\' failed for \'([^:]*):\d+\' . Wrong password/) { 
+0

Ты звезда, спасибо. Он работает абсолютно нормально. – user2107349

0

Перед печатью $ 1, хранить его в переменной, удалить детали порта, и распечатать его:

my $ip = $1; 
$ip =~ s/:.*//; 
print $ip, "\n"; 
+0

нет, это не работает, я получаю следующее ошибка. Использование неинициализированного значения $ 1 в ./block_asterisk.pl строка 21, строка 159410 – user2107349

+0

@ user2107349: печать $ ip, а не $ 1. – choroba

Смежные вопросы