Uzun çıktıyı iki sütuna böl


20

Betiklerimden birinin çıktısını sütunlamak için basit bir yardımcı program veya komut dosyası var mı? Bir şekilde veri var:

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

ancak bu iki uzun olursa, verileri aşağıdaki biçimde yazın (hala dikey olarak düzenlenmiş olan yerlerde):

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

Manpage'i okurken, columnbunun uygun bir şey olduğunu düşünmüyorum ama emin değilim. Formda bölmek yeterince kolaydır:

A B 
C D 
E F

sadece \nher ikinci satırı yazdırarak (şu anki komut dosyamın yaptığı). Herhangi bir fikir? Teşekkürler!

Yanıtlar:


16

Gerçekten denedin column mi? Tam olarak istediğiniz gibi görünüyor:

$ 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

Denedim. Ama yanlış (-t)... But for yours to work reliably you probably need
— Hauke ​​Laging

Ben denedim ama bazı nedenlerden dolayı terminal pencerenizin genişliğine bağlı olduğunu fark etmedim (şimdi açık görünüyor)!
— Hemmer

ayrıca bunu aynı anda iki makinede test ediyordum. Görünüşe göre eski sürüm (Bilimsel Linux'ta 1993 dolaylarında) daha yeni 2004 sürümüne göre farklı davranıyor ...
— Hemmer

11

Çıktıyı sütunlamak için prmetin dosyalarını yazdırılmak üzere dönüştürür:

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

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

Örneğin

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

büyük (uzun) dosya için düzgün çalışmıyor.
— kez

2

Dosyayı ikiye bölebilirsiniz (aynı sayıda satır veya bir satırdan daha fazla olan ilk dosya) ve ardından bunu yapabilirsiniz:

paste file1 file2

Çizgilerin uzunluğu çok farklıysa, uzunlukları boşluklarla doldurarak adapte etmek için printf kullanmak gerekebilir.


Veya ... | paste - - "uzun çıktı bölme" ...
— don_crissti

1

Sadece düz kullanabilirsiniz columns:

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

NOT:columns Komut parçasıdır autogenbenim Fedora 14 sistem üzerinde paketin.

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

Referanslar


columns: command not found. otojen ?
— Gilles 'SO- kötü olmayı bırak

@Gilles - evet bunun bir parçası autogen. Fedora 14 sistemimi kontrol ettim. Cevapta da bahsedeceğim.
— slm
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.