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.

Gabriel
la source

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 .

Gilles Quenot
la source
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

Silverrocker
la source
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