Вирівняйте стовпці у файлі ASCII


12

У мене є текстовий файл, схожий на його:

#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

тобто: не вирівняні в певних випадкових рядках (файл - ~ 10000 рядків). Мені потрібно, щоб він виглядав так:

#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

Тому я шукаю утиліту сценарію / командного рядка для автоматичного вирівнювання стовпців файлу.

Відповіді:


12

Спробуйте зробити це в :

Для тестування на STDOUT:

column -t file.txt

Щоб змінити файл:

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

Як бачите, це все, що вам потрібно. Це економить вам багато часу, граючи зі складними printfтрюками.


Ця команда нічого не робила, вона просто відображала файл у терміналі і закінчувалася. Що я тут пропускаю?
Габріель

Яку ОС ви використовуєте? (помістіть його в оригінальній
пошті

Я використовую Ubuntu 12.10.
Габріель

Просто спробував ще раз, нічого. Чи повинна ця команда модифікувати вихідний файл або створити новий вирівняний?
Габріель

Дивіться мою редагування, щоб відредагувати файл на місці (моя попередня версія була лише для відображення в терміналі)
Жил Квенот

3

Ви шукаєте влучно названий інструмент стовпця.

Для того, що ви хочете, ви повинні передавати свої дані в такий стовпець

cat yourfile | column -s " " -t

Визначте роздільник з -s

-s " "

Скажіть колум скласти таблицю з -т


Що це "some data\nfoo bar"означає?
Габріель

Це не те, що запитував ОП;)
Жил Квенот

@sputnick, я виправив це. вибачте
Silverrocker
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.