在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

因此,基本上我正在寻找一种脚本/命令行实用程序来自动对齐文件的列。

Answers:


12

尝试在执行此操作:

测试STDOUT

column -t file.txt

修改文件:

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

如您所见,这就是您所需要的。它为您节省了许多printf花样繁多的花招。


该命令没有执行任何操作,仅在终端中显示文件并结束。我在这里想念什么?
加百利

您正在使用哪个操作系统?(将其放入您的原始POST中)
Gilles Quenot 2013年

我正在使用Ubuntu 12.10。
加百利

再试一次,没什么。该命令应该修改原始文件还是创建新的对齐文件?
加百利

查看我的编辑以就地编辑文件(我的先前版本只是在终端中显示)
Gilles Quenot 2013年

3

您正在寻找名称恰当的列工具。

对于您想要的东西,您必须像这样将数据通过管道传递到列

cat yourfile | column -s " " -t

用-s定义定界符

-s " "

告诉colume用-t制作表


"some data\nfoo bar"是什么意思?
加百利

这不是OP所要求的;)
Gilles Quenot

@sputnick,我已修复它。抱歉
Silverrocker
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.