Formatando colunas de um texto de saída [duplicado]

0

Eu tenho 3 arquivos

arquivo1:

compute-0-44
compute-0-2 
compute-0-7 
compute-0-8 

arquivo2:

0
11/29/2017 | 02:01:34
0
05/16/2018 | 08:47:56

arquivo3:

0
963
0
459

Quando faço paste file1 file2 file 3 , obtenho:

compute-0-44    0       0
compute-0-2     11/29/2017 | 02:01:34   963
compute-0-7     0       0
compute-0-8     05/16/2018 | 08:47:56   459

O que eu quero é:

compute-0-44    0                       0
compute-0-2     11/29/2017 | 02:01:34   963
compute-0-7     0                       0 
compute-0-8     05/16/2018 | 08:47:56   459

É possível usar colar? Se houver outras alternativas como sed, isso também servirá ao propósito.

    
por Arijit Banerjee 16.05.2018 / 13:29

2 respostas

0

Você pode usar sed para substituir a segunda guia por 3 guias, se a linha não contiver uma barra vertical:

paste file{1..3} | sed '/|/!s/\t/\t\t\t/2'
    
por 16.05.2018 / 13:39
1

Usando o comando pr :

$ pr -mT file{1..3} | expand
compute-0-44            0                       0
compute-0-2             11/29/2017 | 02:01:34   963
compute-0-7             0                       0
compute-0-8             05/16/2018 | 08:47:56   459

De man pr :

   -m, --merge
          print all files in parallel, one in each column, truncate lines,
          but join lines of full length with -J

O canal através de expand converte os separadores em espaços - dependendo da sua aplicação, você pode não precisar disso (eu realmente só o adicionei aqui para fazer a saída parecer formatada corretamente neste site).

    
por 16.05.2018 / 14:01

Tags