Выровнять столбцы в файле 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трюками.

Жиль Квено
источник
Эта команда ничего не сделала, она просто отобразила файл в терминале и завершилась. Что мне здесь не хватает?
Габриэль
Какую ОС вы используете? (поместите его в исходное сообщение)
Gilles Quenot
Я использую Ubuntu 12.10.
Габриэль
Просто попробовал еще раз, ничего. Должна ли эта команда изменять исходный файл или создавать новый выровненный?
Габриэль
См. Мое редактирование, чтобы отредактировать файл на месте (моя предыдущая версия была просто для отображения в терминале)
Gilles Quenot
3

Вы ищете метко названный инструмент колонки.

Для того, что вы хотите, вы должны передать ваши данные в столбец, как это

cat yourfile | column -s " " -t

Определите разделитель с -s

-s " "

Скажи Колуму, чтобы сделать таблицу с -t

Silverrocker
источник
Что это "some data\nfoo bar"значит?
Габриэль
Это не то, что спросил ОП;)
Жиль Квено
@sputnick, я исправил это. извините
Silverrocker