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


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.