Membagi keluaran panjang menjadi dua kolom


20

Apakah ada utilitas atau skrip sederhana untuk membuat kolom output dari salah satu skrip saya? Saya memiliki data dalam beberapa bentuk:

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

tetapi jika ini menjadi dua panjang, tulis data dalam bentuk berikut (di mana masih dipesan secara vertikal):

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

Dari membaca manual, saya tidak berpikir bahwa ini adalah sesuatu yang columnpantas untuk tetapi saya tidak yakin. Cukup mudah untuk membagi dalam bentuk:

A B 
C D 
E F

dengan hanya mencetak \nsetiap baris kedua (apa yang dilakukan skrip saya saat ini). Ada ide? Terima kasih!

Jawaban:


16

Apakah Anda benar-benar mencoba column ? Tampaknya persis seperti yang Anda inginkan:

$ 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

Saya sudah mencoba. Tapi salah (dengan - -t)... But for yours to work reliably you probably need kolom`.
Hauke ​​Laging

Saya memang mencoba tetapi untuk beberapa alasan saya tidak menyadari bahwa itu tergantung pada lebar jendela terminal Anda (tampak jelas sekarang)!
Hemmer

juga saya sedang menguji ini pada dua mesin sekaligus. Rupanya versi lama (sekitar tahun 1993 di Scientific Linux) berperilaku berbeda dengan versi 2004 yang lebih baru ...
Hemmer

11

Untuk membuat kolom output, prkonversi file teks untuk dicetak:

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

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

misalnya

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

tidak berfungsi dengan benar untuk file besar (panjang).
Sekali

2

Anda dapat membagi file menjadi dua (dengan jumlah baris yang sama atau file pertama memiliki satu baris lebih) dan kemudian lakukan ini:

paste file1 file2

Jika panjang garis terlalu berbeda maka mungkin perlu menggunakan printf untuk menyesuaikan panjang dengan mengisi ruang.


Atau ... | paste - - ketika "membagi output panjang" ...
don_crissti

1

Anda dapat menggunakan sekadar columns:

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

CATATAN: yang columnsperintah adalah bagian dari autogenpaket pada saya Fedora 14 sistem.

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

Referensi


columns: command not found. autogen ?
Gilles 'SO- stop being evil'

@Gilles - ya itu bagian dari autogen. Baru saja memeriksa sistem Fedora 14 saya. Saya akan menyebutkannya dalam jawaban juga.
slm
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.