Perl как реализовать вывод первого числа в строке?

По примерам я примерно разобрался как научить скрипт заходить по telnet на железку, выполнять требуемые команды и заносить их в лог. Теперь из лога мне нужно вывести в отдельный документ первое число последней строки.
Нечто похожее нашел в примере и подставил свои данные
$s = "nnn MAC address learned in routing instance PPPoE-xxx bridge domain __PPPoE-xxxx__";
if ($s =~ /(\d)(?=\s)/)  # Найти цифру за которой стоит '\s'(пробел)
    {
        print "$1\n"; 
   }
else { print "ошибка поиска\n";}


Только тут не указывается, что нужно найти именно первое число после котороего стоит пробел. Какой идентификатор будет указывать именно на первое совпадение? А может и не стоит замарачиваться, ведь в требуемой строке только nnn является целым числом (xxx может являться сочетанием букв и цифр)
  • Вопрос задан
  • 2620 просмотров
Пригласить эксперта
Ответы на вопрос 2
@ldvldv
upd:
#!/usr/bin/perl
use strict;
use warnings;
 
open(my $file, 'log.txt') or die "Could not open file $!";


my $first = <$file>;

if ($first =~ /^(\d+)(?=\s)/)  
{
   print "$1\n"; 
}
else { print "ошибка поиска\n";}
Ответ написан
IlyaEvseev
@IlyaEvseev
Opensource geek
Какой идентификатор будет указывать именно на первое совпадение?

Никакой, это свойство операции поиска по образцу.
$s = "...";
my @lines = split /[\r\n]+/, $s;
my $result = ( $lines[$#lines] =~ /(\d)\s/ ? $1 : "not found" );
print "$result\n";
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы