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.