Разделить длинный вывод на две колонки

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

Прочитав man-страницу, я не думаю, что это что- 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 --columns`.
Хауке Лагинг
Я попытался, но по какой-то причине я не понял, что это зависит от ширины окна вашего терминала (теперь это очевидно)!
Хеммер
также я тестировал это на двух машинах одновременно. По-видимому, старая версия (около 1993 года в Scientific Linux) ведет себя иначе, чем новая версия 2004 года ...
Хеммер
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
...
Digix
источник
не работает должным образом для большого (длинного) файла.
однажды
2

Вы можете разделить файл на две части (с одинаковым количеством строк или первым файлом, имеющим на одну строку больше) и затем сделать это:

paste file1 file2

Если длина строк слишком различна, тогда может потребоваться использовать printf для адаптации длин путем заполнения пробелами.

Хауке Лагинг
источник
Или ... | paste - - когда "
разбивает
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

Ссылки

SLM
источник
columns: command not found, автоген ?
Жиль "ТАК - перестань быть злым"
@ Жиль - да, это часть autogen. Только что проверил на моей системе Fedora 14. Я упомяну это и в ответе.
SLM