Розбийте довгий вихід на дві колонки


20

Чи є проста утиліта або скрипт, щоб зібрати висновок одного з моїх сценаріїв? У мене є дані в якійсь формі:

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

але якщо це стає двома довгими, запишіть дані у такій формі (де все ще розташовано вертикально):

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

Читаючи сторінку, я не думаю, що це щось columnпідходить, але я не впевнений. Досить просто розділити форму:

A B 
C D 
E F

лише друкуючи \nкожен другий рядок (що робить мій поточний сценарій). Будь-які ідеї? Спасибі!

Відповіді:


16

Ви насправді намагалися column ? Здається, саме те, що ви хочете:

$ 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

Я намагався. Але неправильно (з-t)... But for yours to work reliably you probably need
стовпчиками

Я намагався, але чомусь я не усвідомлював, що це залежить від ширини вашого вікна терміналу (зараз здається очевидним)!
Хеммер

також я тестував це відразу на двох машинах. Мабуть, стара версія (близько 1993 року на Scientific Linux) поводиться інакше, ніж новіша версія 2004 року ...
Hemmer

11

Для обміну результатами prперетворення текстових файлів для друку:

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

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

напр

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

не працює належним чином для великих (довгих) файлів.
один раз

2

Ви можете розділити файл на два (з однаковою кількістю рядків або перший файл, який має ще один рядок), а потім зробити це:

paste file1 file2

Якщо довжина рядків занадто різна, можливо, знадобиться використовувати printf для адаптації довжин шляхом прокладки пробілами.


Або ... | paste - - при "розбиванні довгого виходу" ...
don_crissti

1

Ви можете використовувати просто columns:

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

Примітка:columns команда є частиною autogenпакета на моїй системі Fedora 14.

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

Список літератури



@Gilles - так, це частина autogen. Щойно перевірено в моїй системі Fedora 14. Я це згадаю і у відповіді.
slm
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.