Precisa analisar uma tabela de entrada dupla com dois pares

2

Eu tenho esta tabela de duas entradas resultante de uma saída do programa:

Variable1  : Value1  
Variable2  : Value2  
Variable3  : Value3  
Variable4  : Value4  
Variable5  : Value5  
Variable6  : Value6  
Variable7  : Value7 

Eu preciso extrair o primeiro e o quinto pares, algo que eu faço com o grep:

$ {program command} | grep -e Variable1 -e Variable5

resultando nessa saída:

Variable1  : Value1  
Variable5  : Value5  

O problema aqui é que eu preciso dos dois pares na linha mesmo , mas o comando grep -e imprime um LF / CR após cada e; Eu preciso dos quatro pares na mesma linha para fazer uma classificação final com base no tamanho do arquivo. Eu acho que eu poderia fazer isso em awk ou perl a partir da mesma linha de comando, mas eu ainda sou um pouco verde com eles.

Alguma ideia? Agradecemos antecipadamente.

    
por cig0 03.09.2012 / 14:42

3 respostas

2

Se você quiser apenas participar das linhas, use tr para excluir a nova linha:

$ {program command} | grep -e Variable1 -e Variable5 | tr -d '\n'

Para fazer tudo em awk :

$ {program command} | awk '/Variable[15]/ { printf("%s ", $0) }'

Mesmo em sed :

$ {program command} | sed -n '/Variable[15]/H; $ { x; s/\n/ /g; p }'
    
por 03.09.2012 / 16:19
1

Se você quiser apenas juntar as duas linhas do grep, a maneira mais fácil é percorrer fmt .

$ {program command} | grep -e Variable1 -e Variable5 | fmt

Se as linhas forem muito longas, use a opção -w LINELENGTH de fmt.

    
por 03.09.2012 / 15:00
0

Você pode remover a nova linha pela substituição de Perl

perl -ne 's/\n/ /; print if /Variable[15]/'

Se você precisar de uma nova linha no final, adicione

perl -ne 's/\n/ /; print if /Variable[15]/ }{ print "\n"'
    
por 03.09.2012 / 15:20

Tags