Diviser la sortie longue en deux colonnes


20

Existe-t-il un utilitaire ou un script simple pour classer la sortie d'un de mes scripts? J'ai des données sous une forme ou une autre:

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

mais si cela devient long, écrivez les données sous la forme suivante (où elles sont toujours ordonnées verticalement):

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

En lisant la page de manuel, je ne pense pas que ce soit quelque chose columnqui conviendrait, mais je ne suis pas sûr. Il est assez facile de diviser le formulaire:

A B 
C D 
E F

en imprimant uniquement \ntoutes les deux lignes (ce que fait mon script actuel). Des idées? Merci!

Réponses:


16

Avez-vous vraiment essayé column ? Cela semble être exactement ce que vous voulez:

$ 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

J'ai essayé. Mais à tort (avec -t)... But for yours to work reliably you probably need --columns`.
Hauke ​​Laging

J'ai essayé mais pour une raison quelconque, je ne savais pas que cela dépendait de la largeur de la fenêtre de votre terminal (cela semble évident maintenant)!
Hemmer

aussi je testais cela sur deux machines à la fois. Apparemment, l'ancienne version (vers 1993 sur Scientific Linux) se comporte différemment de la version 2004 plus récente ...
Hemmer

11

Pour classer la sortie, prconvertit les fichiers texte à imprimer:

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

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

par exemple

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

ne fonctionne pas correctement pour un fichier volumineux (long).
une fois

2

Vous pouvez diviser le fichier en deux (avec le même nombre de lignes ou le premier fichier ayant une ligne de plus), puis procédez comme suit:

paste file1 file2

Si la longueur des lignes est trop différente, il peut être nécessaire d'utiliser printf pour adapter les longueurs en remplissant les espaces.


Ou ... | paste - - quand "diviser la sortie longue" ...
don_crissti

1

Vous pouvez utiliser simplement columns:

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

REMARQUE: la columnscommande fait partie du autogenpackage sur mon système Fedora 14.

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

Les références


columns: command not found. autogène ?
Gilles 'SO- arrête d'être méchant'

@ Gilles - oui, il fait partie de autogen. Je viens de vérifier sur mon système Fedora 14. Je le mentionnerai également dans la réponse.
slm
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.