Richten Sie die Spalten in der ASCII-Datei aus

12

Ich habe eine Textdatei, die wie folgt aussieht:

#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

Dh: bei bestimmten zufälligen Zeilen nicht ausgerichtet (die Datei ist ~ 10000 Zeilen lang) Ich brauche es, um so auszusehen:

#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

Im Grunde suche ich ein Skript- / Befehlszeilen-Dienstprogramm, um die Spalten der Datei automatisch auszurichten.

Gabriel
quelle

Antworten:

12

Versuchen Sie dies in einer :

Zum Testen auf STDOUT:

column -t file.txt

So ändern Sie die Datei:

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

Wie Sie sehen, ist das alles, was Sie brauchen. Sie sparen viel Zeit beim Spielen mit komplizierten printfTricks.

Gilles Quenot
quelle
Dieser Befehl hat nichts bewirkt, sondern lediglich die Datei im Terminal angezeigt und beendet. Was vermisse ich hier?
Gabriel
Welches Betriebssystem verwenden Sie? (
Legen Sie
Ich benutze Ubuntu 12.10.
Gabriel
Einfach nochmal probiert, nichts. Sollte dieser Befehl die ursprüngliche Datei ändern oder eine neue ausgerichtete Datei erstellen?
Gabriel
Siehe meine Bearbeitung, um die Datei an Ort und Stelle zu bearbeiten (meine vorherige Version sollte nur in einem Terminal angezeigt werden)
Gilles Quenot
3

Sie suchen nach dem passenden Spaltenwerkzeug.

Für das, was Sie möchten, müssen Sie Ihre Daten an eine Spalte wie diese weiterleiten

cat yourfile | column -s " " -t

Definieren Sie den Begrenzer mit -s

-s " "

Lassen Sie colume mit -t eine Tabelle erstellen

Silverrocker
quelle
Was bedeutet dies "some data\nfoo bar"bedeuten?
Gabriel
Das hat OP nicht gefragt;)
Gilles Quenot
@sputnick, ich habe es behoben. Entschuldigung
Silverrocker