Como posso exibir 3 linhas de texto por vez em uma linha?

6

Eu tenho um arquivo de log que exibe dados de 3 linhas por vez. Assim:

1 data   
2 data   
3 data   
1 data   
2 data   
3 data   
1 data   
2 data   
3 data

Eu gostaria de pegar cada 3 linhas e exibi-las em uma linha como esta:

1 data 2 data 3 data  
1 data 2 data 3 data  
1 data 2 data 3 data

Eu gostaria de poder catar este arquivo e enviá-lo através de um comando (s) que fará isso por mim. Eu suspeito que sed ou awk sejam uma solução.

    
por Joe Mama 26.02.2016 / 20:24

3 respostas

10

Você pode usar paste :

$ paste - - - <data.txt
1 data      2 data      3 data   
1 data      2 data      3 data   
1 data      2 data      3 data
    
por 26.02.2016 / 20:53
2

Aqui está uma maneira:

$ perl -pe 's/\n/ / unless $. % 3 == 0' file 
1 data    2 data    3 data   
1 data    2 data    3 data   
1 data    2 data    3 data
    
por 26.02.2016 / 20:47
2

Ou também sed por "N" omitindo duas linhas e, em seguida, adicionando as novas linhas no buffer resultante.

sed 'N;N;s/\n/ /g'
    
por 26.02.2016 / 22:42