Dividir saída longa em duas colunas

18

Existe um utilitário ou script simples para colocar em coluna a saída de um dos meus scripts? Eu tenho dados de alguma forma:

A aldkhasdfljhaf
B klajsdfhalsdfh
C salkjsdjkladdag
D lseuiorlhisnflkc
E sdjklfhnslkdfhn
F kjhnakjshddnaskjdh

mas se isso se tornar dois longos, escreva os dados no seguinte formulário (onde ainda são ordenados verticalmente):

A aldkhasdfljhaf    D lseuiorlhisnflkc
B klajsdfhalsdfh    E sdjklfhnslkdfhn
C salkjsdjkladdag   F kjhnakjshddnaskjdh

A partir da leitura da manpage, não acho que isso seja algo em que column seria apropriado, mas não tenho certeza. É fácil dividir o formulário:

A B 
C D 
E F

imprimindo apenas \n a cada segunda linha (o que meu script atual faz). Alguma ideia? Obrigado!

    
por Hemmer 04.07.2013 / 16:21

4 respostas

14

Você realmente tentou column ? Parece ser exatamente o que você quer:

$ cat file
A aldkhasdfljhaf
B klajsdfhalsdfh
C salkjsdjkladdag
D lseuiorlhisnflkc
E sdjklfhnslkdfhn

$ column file
A aldkhasdfljhaf    D lseuiorlhisnflkc
B klajsdfhalsdfh    E sdjklfhnslkdfhn
C salkjsdjkladdag   F kjhnakjshddnaskjdh
    
por 04.07.2013 / 16:31
10

Para colocar a saída em coluna, pr converte arquivos de texto para impressão:

-COLUMN, --columns=COLUMN: output COLUMN columns
      and print columns down, unless -a is used.

-t, --omit-header : omit page headers and trailers

por exemplo,

ls /etc | pr -2 -t
abrt                                gtk-2.0
acpi                                hal
adjtime                             hba.conf
agent.properties                    host.conf
aliases                             hosts
aliases.db                          hosts.allow
...
    
por 19.06.2014 / 14:57
2

Você pode dividir o arquivo em dois (com o mesmo número de linhas ou o primeiro arquivo com uma linha a mais) e, em seguida, faça o seguinte:

paste file1 file2

Se o comprimento das linhas for muito diferente, pode ser necessário usar printf para adaptar os comprimentos preenchendo espaços.

    
por 04.07.2013 / 16:39
1

Você pode usar apenas columns :

$ cat test.txt | columns
A aldkhasdfljhaf             B klajsdfhalsdfh             C salkjsdjkladdag
D lseuiorlhisnflkc           E sdjklfhnslkdfhn            F kjhnakjshddnaskjdh

NOTA: o comando columns faz parte do pacote autogen no meu sistema Fedora 14.

$ rpm -qf /usr/bin/columns
autogen-5.9.4-7.fc12.x86_64

Referências

por 04.07.2013 / 17:00