Захватить значение из многострочного вывода - PullRequest
2 голосов
/ 28 января 2012
use Control::CLI;
$cli = new Control::CLI('SSH');
$cli->connect(Host=>'10.10.10.10',Username=>'user',Password=>'pwd');
$cli->waitfor('>');
$cli->print('Show XXXXXXXXXXXXXXXXXXXX| grep Active');
@f=$cli->waitfor('>');
print @f;
$cli->disconnect;

Приведенный выше код дает мне вывод в виде:

 Show XXXXXXXXXXXXXXXXXXXX| grep Active
Active
Sunday January 29 00:40:34 IST 2012
Active                  : 1106          Dormant                 : 0
[local]NOI-S57-XYXYX>

Но я хочу захватить только "1106" (в 3-й строке значение между Active: "1106" и неактивным)помогите !!

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

Ответы [ 3 ]

1 голос
/ 29 января 2012

Чуть точнее, для LINE-4:

my $number = $1 if $f[3] =~ m/Active\s+:\s+(\d+)\s+Dormant/;
print defined $number ? "$number\n" : "NONE\n";
0 голосов
/ 30 января 2012

У меня работал следующий код:

@myarray = ($f =~ m/(\d+)/g);
print "@myarray['5'] ";
0 голосов
/ 28 января 2012

С минимальной проверкой ошибок это должно получить ваш номер в третьей строке:

if( $f[3] =~ m/(\d+)/ ) {
  printf "Found number on third line: %d\n" , $1 ;
} else {
  print "No number on line 4\n" ;
}

Редактировать: Исправленный номер строки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...