Allinea le colonne nel file ASCII


12

Ho un file di testo che assomiglia al suo:

#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

cioè: non allineato a determinate linee casuali (il file è lungo ~ 10000 linee) Ho bisogno che assomigli a questo:

#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

Quindi in pratica sto cercando un'utilità di script / riga di comando per allineare automaticamente le colonne del file.

Risposte:


12

Prova a farlo in una :

Per testare su STDOUT:

column -t file.txt

Per modificare il file:

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

Come puoi vedere, è tutto ciò di cui hai bisogno. Ti fa risparmiare un sacco di tempo giocando con printftrucchi complicati .


Questo comando non ha fatto nulla, ha semplicemente visualizzato il file nel terminale e si è concluso. Cosa mi sto perdendo qui?
Gabriel,

Quale sistema operativo stai usando? (inseriscilo nel tuo POST originale)
Gilles Quenot,

Sto usando Ubuntu 12.10.
Gabriel,

Ho appena provato di nuovo, niente. Questo comando dovrebbe modificare il file originale o crearne uno nuovo allineato?
Gabriel,

Guarda la mia modifica per modificare il file sul posto (la mia versione precedente era solo per essere visualizzata in un terminale)
Gilles Quenot,

3

Stai cercando lo strumento colonna con un nome appropriato.

Per quello che vuoi devi reindirizzare i tuoi dati alla colonna in questo modo

cat yourfile | column -s " " -t

Definire il delimitatore con -s

-s " "

Di 'a Colume di creare un tavolo con -t


Cosa significa questo "some data\nfoo bar"?
Gabriel,

Non è quello che OP ha chiesto;)
Gilles Quenot,

@sputnick, l'ho risolto. scusa
Silverrocker,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.