ASCII dosyasındaki sütunları hizalama


12

Onun gibi görünen bir metin dosyası var:

#c1     c2              c3              c4              c5              c6      c7      c8      c9      c10     c11     c12     c13
4599    995,274 2523,658        264,1417170     -33,6000        -0,3600 0,0202  0,0069  0,0227  10,1041 0,0169  0,2817  0,0239
6173    1552,290        1595,696        264,0603912     -33,4880        0,4374  0,0287  1,8123  0,0385  10,1289 0,0292  2,8445  0,0366
6456    1658,630        1529,292        264,0449377     -33,4800        0,0109  0,0234  1,0955  0,0296  10,5032 0,0223  1,7168  0,0293
8932    2750,029        1374,395        263,8866195     -33,4615        -0,3185 0,0249  0,9196  0,0302  10,5858 0,0221  1,3886  0,0296
4095    820,716 495,315 264,1658451     -33,3546        -0,4388 0,0216  0,6497  0,0252  10,6026 0,0188  1,1796  0,0258
4737    1045,289        1395,983        264,1338240     -33,4636        0,5900  0,0231  0,8853  0,0273  10,6501 0,0204  1,1661  0,0270

ie: belirli rasgele çizgiler (dosya ~ 10000 satır uzunluğunda) hizalı değil Ben böyle görünmesi gerekiyor:

#c1     c2              c3              c4              c5              c6      c7      c8      c9      c10     c11     c12     c13
4599    995,274         2523,658        264,1417170     -33,6000        -0,3600 0,0202  0,0069  0,0227  10,1041 0,0169  0,2817  0,0239
6173    1552,290        1595,696        264,0603912     -33,4880        0,4374  0,0287  1,8123  0,0385  10,1289 0,0292  2,8445  0,0366
6456    1658,630        1529,292        264,0449377     -33,4800        0,0109  0,0234  1,0955  0,0296  10,5032 0,0223  1,7168  0,0293
8932    2750,029        1374,395        263,8866195     -33,4615        -0,3185 0,0249  0,9196  0,0302  10,5858 0,0221  1,3886  0,0296
4095    820,716         495,315         264,1658451     -33,3546        -0,4388 0,0216  0,6497  0,0252  10,6026 0,0188  1,1796  0,0258
4737    1045,289        1395,983        264,1338240     -33,4636        0,5900  0,0231  0,8853  0,0273  10,6501 0,0204  1,1661  0,0270

Yani temelde otomatik olarak dosyanın sütunlarını hizalamak için bir komut dosyası / komut satırı yardımcı programı arıyorum.

Yanıtlar:


12

Bunu bir yapmayı deneyin :

Test etmek için STDOUT:

column -t file.txt

Dosyayı değiştirmek için:

column -t file.txt > new_file.txt && mv new_file.txt file.txt

Gördüğünüz gibi ihtiyacınız olan her şey bu. Karmaşık printfnumaralarla oynamak size zaman kazandırır .


Bu komut hiçbir şey yapmadı, sadece dosyayı terminalde gösterdi ve sona erdi. Burada ne eksik?
Gabriel

Hangi işletim sistemini kullanıyorsunuz? (orijinal
POST'unuza koyun

Ubuntu 12.10 kullanıyorum.
Gabriel

Sadece tekrar denedim, hiçbir şey. Bu komut orijinal dosyayı değiştirmeli mi yoksa yeni bir hizalanmış dosya mı oluşturmalı?
Gabriel

Dosyayı yerinde düzenlemek için düzenlememe bakın (önceki
sürümüm

3

Uygun şekilde adlandırılmış sütun aracını arıyorsunuz.

İstediğiniz için verilerinizi böyle bir sütuna bağlamanız gerekir

cat yourfile | column -s " " -t

Sınırlayıcıyı -s ile tanımlayın

-s " "

Colum'a -t ile bir tablo yapmasını söyle


Bu ne anlama "some data\nfoo bar"geliyor?
Gabriel

OP'nin sorduğu şey bu değil;)
Gilles Quenot

@ sputnick, düzelttim. üzgünüm
Silverrocker
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.