Aligner les colonnes dans un fichier ASCII


12

J'ai un fichier texte qui ressemble au sien:

#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

c'est-à-dire: pas aligné sur certaines lignes aléatoires (le fichier fait environ 10000 lignes) J'ai besoin qu'il ressemble à ceci:

#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

Donc, fondamentalement, je recherche un utilitaire de script / ligne de commande pour aligner automatiquement les colonnes du fichier.

Réponses:


12

Essayez de faire cela dans un :

Pour tester sur STDOUT:

column -t file.txt

Pour modifier le fichier:

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

Comme vous pouvez le voir, c'est tout ce dont vous avez besoin. Cela vous fait gagner beaucoup de temps en jouant avec des printftours compliqués .


Cette commande n'a rien fait, elle a simplement affiché le fichier dans le terminal et s'est terminée. Qu'est-ce que j'oublie ici?
— Gabriel

Quel système d'exploitation utilisez-vous? (mettez-le dans votre POST d'origine)
— Gilles Quenot

J'utilise Ubuntu 12.10.
— Gabriel

Je viens de l'essayer à nouveau, rien. Cette commande doit-elle modifier le fichier d'origine ou en créer un nouveau aligné?
— Gabriel

Voir ma modification pour modifier le fichier sur place (ma version précédente était juste d'afficher dans un terminal)
— Gilles Quenot

3

Vous recherchez l'outil de colonne bien nommé.

Pour ce que vous voulez, vous devez diriger vos données vers une colonne comme celle-ci

cat yourfile | column -s " " -t

Définissez le délimiteur avec -s

-s " "

Dites à colume de faire un tableau avec -t


Qu'est-ce "some data\nfoo bar"que cela signifie?
— Gabriel

Ce n'est pas ce que OP a demandé;)
— Gilles Quenot

@sputnick, je l'ai corrigé. désolé
— Silverrocker
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.