Criando várias linhas como linhas únicas

0

Eu tenho menos de quatro linhas:

EXTRACT    ETEST  Last Started 2016-03-20 20:56   Status RUNNING  
Checkpoint Lag       00:00:02 (updated 00:00:04 ago)
EXTRACT    PTEST  Initialized   2016-03-31 06:25   Status STOPPED 
Checkpoint Lag       00:00:00 (updated 02:21:09 ago)

Tudo que eu quero fazer em duas linhas, como abaixo:

EXTRACT    ETEST  Last Started 2016-03-20 20:56   Status RUNNING Checkpoint Lag       00:00:02 (updated 00:00:04 ago)
EXTRACT    PTEST  Initialized  2016-03-31 06:25   Status STOPPED Checkpoint Lag       00:00:00 (updated 02:21:09 ago)

Que eu posso fazer com cat /tmp/glog.lst|xargs -n 14 :

EXTRACT    ETEST  Last Started 2016-03-20 20:56   Status RUNNING Checkpoint Lag       00:00:02 (updated 00:00:04 ago)
EXTRACT    PTEST  Initialized  2016-03-31 06:25   Status STOPPED Checkpoint Lag       00:00:00 (updated 02:21:09 ago)

Mas row1 tem 14 campos, row2 tem 13 campos.

O problema foi row2 foi inicializado versus "Último início"

Eu quero fazer uma linha com menos de 14 colunas para 14 cols instalando colunas fictícias com ou "N" (ou) alguma coisa, então ele terá 14 cols para que eu possa processar meu script facilmente.

Eu quero fazer isso finalmente

EXTRACT    ETEST  Last Started  2016-03-20 20:56   Status RUNNING Checkpoint Lag       00:00:02 (updated 00:00:04 ago)
EXTRACT    PTEST  Initialized N 2016-03-31 06:25   Status STOPPED Checkpoint Lag       00:00:00 (updated 02:21:09 ago)

Isso é o que eu preciso

$ awk '{ if (FNR%2==1) tmp=$0; else print tmp,$0 }'  /tmp/gglog.lst
EXTRACT    ETEST1  Initialized 2016-03-20 20:56   Status STOPPED Checkpoint Lag       00:00:02 (updated 00:00:09 ago)
EXTRACT    ETEST2  Last Started 2016-03-20 20:56   Status RUNNING Checkpoint Lag       00:00:02 (updated 00:00:04 ago)
EXTRACT    ETEST3  Last Started 2016-03-20 20:56   Status RUNNING Checkpoint Lag       00:00:02 (updated 00:00:09 ago)
EXTRACT    PTEST1  Last Started 2016-03-29 08:46   Status RUNNING Checkpoint Lag       00:00:00 (updated 00:00:02 ago)
EXTRACT    PTEST0  Last Started 2016-03-29 08:46   Status RUNNING Checkpoint Lag       00:00:00 (updated 00:00:05 ago)

Agora quero retirar os valores de coluna de Inicializado / Último / Iniciado para que ele apareça dessa maneira

EXTRACT    ETEST1  2016-03-20 20:56   Status STOPPED Checkpoint Lag       00:00:02 (updated 00:00:09 ago)
EXTRACT    ETEST2  2016-03-20 20:56   Status RUNNING Checkpoint Lag       00:00:02 (updated 00:00:04 ago)
EXTRACT    ETEST3  2016-03-20 20:56   Status RUNNING Checkpoint Lag       00:00:02 (updated 00:00:09 ago)
EXTRACT    PTEST1  2016-03-29 08:46   Status RUNNING Checkpoint Lag       00:00:00 (updated 00:00:02 ago)
EXTRACT    PTEST0  2016-03-29 08:46   Status RUNNING Checkpoint Lag       00:00:00 (updated 00:00:05 ago)

ou podemos quebrar inicializado para iniciar agora ou seja. que nunca a linha nós arquivamos o trabalho Inicializado nós queremos quebrá-lo em "Init Now"

EXTRACT    ETEST1  Init Now 2016-03-20 20:56   Status STOPPED Checkpoint Lag       00:00:02 (updated 00:00:09 ago)
EXTRACT    ETEST2  Last Started 2016-03-20 20:56   Status RUNNING Checkpoint Lag       00:00:02 (updated 00:00:04 ago)
EXTRACT    ETEST3  Last Started 2016-03-20 20:56   Status RUNNING Checkpoint Lag       00:00:02 (updated 00:00:09 ago)
EXTRACT    PTEST1  Last Started 2016-03-29 08:46   Status RUNNING Checkpoint Lag       00:00:00 (updated 00:00:02 ago)
EXTRACT    PTEST0  Last Started 2016-03-29 08:46   Status RUNNING Checkpoint Lag       00:00:00 (updated 00:00:05 ago)
    
por Maddy 31.03.2016 / 15:28

2 respostas

0

  • Para mesclar as linhas de dois em dois:

    awk '{ if(FNR%2==1) tmp=$0; else print tmp,$0 }' tmp/glog.lst

  • Para substituir Initialized por Init Now :

    sed 's/Initialized/Init Now/' tmp/glog.lst

  • Para fazer os dois, use um canal para encadear estes:

    awk '{ if(FNR%2==1) tmp=$0; else print tmp,$0 }' tmp/glog.lst | sed 's/Initialized/Init Now/'

por 31.03.2016 / 16:24
0

Para responder à sua pergunta de título, você pode participar de linhas consecutivas como essa usando sed :

sed 'N;s/\n/ /' /tmp/glog.lst

No entanto, o problema de sua coluna é realmente uma questão completamente diferente. A melhor solução para isso é, ir para o autor para a ferramenta que gera seu arquivo glog.lst e torná-lo usar algum delimitador sensível em vez de espaço em branco .

Se isso for completamente impossível, você poderá contorná-lo, mas qualquer outra coisa será, por necessidade, um mero hack.

    
por 31.03.2016 / 23:24

Tags