Teilen Sie lange Ausgaben in zwei Spalten auf

20

Gibt es ein einfaches Hilfsprogramm oder Skript, um die Ausgabe von einem meiner Skripte zu trennen? Ich habe Daten in irgendeiner Form:

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

Wenn dies jedoch zwei Sekunden dauert, schreiben Sie die Daten in der folgenden Form (wo immer noch vertikal angeordnet):

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

Nach dem Lesen der Manpage glaube ich nicht, dass dies columnangemessen wäre, aber ich bin mir nicht sicher. Es ist einfach genug, das Formular zu teilen:

A B 
C D 
E F

indem \nich nur jede zweite Zeile drucke (was mein aktuelles Skript macht). Irgendwelche Ideen? Vielen Dank!

Hemmer
quelle

Antworten:

16

Hast du es tatsächlich versucht column ? Es scheint genau das zu sein, was Sie wollen:

$ 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
terdon
quelle
Ich habe es versucht. Aber zu Unrecht (mit -t)... But for yours to work reliably you probably need --columns`.
Hauke ​​Laging
Ich habe es versucht, aber aus irgendeinem Grund habe ich nicht bemerkt, dass es von der Breite Ihres Terminalfensters abhängt (scheint jetzt offensichtlich zu sein)!
Hemmer
Auch ich habe dies auf zwei Maschinen gleichzeitig getestet. Anscheinend verhält sich die alte Version (circa 1993 auf Scientific Linux) anders als die neuere Version von 2004 ...
Hemmer
11

prKonvertiert zum Spalten der Ausgabe Textdateien zum Drucken:

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

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

z.B

ls /etc | pr -2 -t
abrt                                gtk-2.0
acpi                                hal
adjtime                             hba.conf
agent.properties                    host.conf
aliases                             hosts
aliases.db                          hosts.allow
...
Digix
quelle
Funktioniert bei großen (langen) Dateien nicht richtig.
Einmal
2

Sie können die Datei in zwei Teile aufteilen (mit der gleichen Anzahl von Zeilen oder der ersten Datei mit einer Zeile mehr) und dann folgendermaßen vorgehen:

paste file1 file2

Wenn die Länge der Zeilen zu unterschiedlich ist, müssen Sie möglicherweise printf verwenden, um die Längen durch Auffüllen mit Leerzeichen anzupassen.

Hauke ​​Laging
quelle
Oder ... | paste - - wenn "lange Ausgabe
aufteilen
1

Sie können einfach nur verwenden columns:

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

HINWEIS: Der columnsBefehl ist Teil des autogenPakets auf meinem Fedora 14-System.

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

Verweise

slm
quelle
columns: command not found. autogen ?
Gilles 'SO- hör auf böse zu sein'
@ Gilles - ja, es ist ein Teil von autogen. Ich habe gerade mein Fedora 14-System überprüft. Ich werde es auch in der Antwort erwähnen.
SLM