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.