Захватывать вывод команды

Я нуждаюсь в том, чтобы захватить следующий ответ, препятствуя титулу и им---; кроме того, ПУСТЫЕ поля, NULL, и ТЕКСТ:

Slot  Type     PEC      Primary  Secondary
----  ----  ----------  -------  ---------
  1   DMC               OOS Mtce Unequipped  
  2   DMC   NTBN19CA    IS       
  3   DMC               NULL     
  4   DMC   NTBN19EA    IS       
  5   DMC   NTBN19CA    IS       
  6   DMC   NTBN19CA    IS       
  7   DMC   NTBN19CA    IS       
  8   DMC   NTBN19CA    IS       
  9   DMC   NTBN19CA    IS       
 10   DMC   NTBN19CA    IS       
 11   DMC   NTBN19CA    IS       
 12   DMC   NTBN19EA    IS       
 13   DMC   NTBN19CA    IS       
 14   DMC   NTBN19CA    IS       
 15   MSC   NTBN20BA    IS       
 --   SM    NTBN21AB    IS       
 --   SM    NULL        NULL     
 --   SM    NULL        NULL     
 --   SM    NULL        NULL

Мой рукописный шрифт в Perl:

for my $line (split "\r", $pmatch) 
{
    $line =~ s/\s*\n$//;
    if ($line =~ /More/) {
        $t->print(''); # enter
        next PAGE;
    }
    elsif ($line =~ /^\s+[\d-]/) {
        my (undef, $slot, $type, $pec, $primary, $secondary) = split /\s+/, $line, 6;
        push @$vplevels, {
              slot      => $slot
            , type      => $type
            , pec       => $pec
            , primary   => $primary
            , secondary => $secondary
            , opc       => $opc };
    }
}

return $vplevels;

У меня есть один split() информации, которая иногда приходит с 5 полными колоннами и другими разами не, а следовательно стоимость PEC берет стоимость Primary. Последуй за тем же самым в других колоннах. Поэтому, я не думаю, как мочь санкционировать, если он приходит, опустоши, что поддержал ее, и остальная стоимость все в Ваших соответствующих полях.

2
задан 25.11.2019, 18:07
1 ответ

SГ, - проблема использования split () приходит, когда поля могут быть vacГ - вы и тогда запутываются с отделяющим местом полей. soluciГіn, для этого типа проблем, состоит в том, чтобы использовать

---, что estГЎn под tГ-tulo , как guГ - чтобы, для знать dГіnde, они начинают и заканчивают поля. Эти колонны сторожи в array, и потом, из-за каждый lГ-nea, ты извлекаешь поля с простым substr ().

AdemГЎs, эта soluciГіn ты servirГЎ даже, если формат вывода меняется, так в nГєmero полей как в ширине каждой колонны.

, Чтобы извлекать положения схем, могут использовать одну expresiГіn регулировать в цикле while (), и с нею funciГіn pos (), или лучше, с контентом переменных - и + , стоит тебе, чтобы знать ее posiciГіn о каждой колонне.

Другая opciГіn mГЎs могущественный состоит в том, чтобы использовать команду unpack (). AquГ - есть пример: http://perlenespanol.com/foro/al-descargar-reemplazar-espacios-vacios-por-nan-t4470.html

2
ответ дан 01.12.2019, 12:39
  • 1
    Привет спасибо за ответ. Пожалуйста я podrí схвати помогать с практическим примером, так как того, которого ты оставил мне в соединении, я это не понимаю очень спасибо – Juan Perez 06.11.2019, 16:01
  • 2
    Ты можешь входить в форум и выдвигать твой cuestió n. Aquí в StackOverflow, осложнено помещать có я говорю длину. – Joaquín Ferrero 06.11.2019, 21:50