【发布时间】:2021-02-04 16:47:52
【问题描述】:
我有一个制表符分隔的文件,由 7 列组成。
ABC 1437 1 0 71 15.7 174.4
DEF 0 0 0 1 45.9 45.9
GHIJ 2 3 0 9 1.1 1.6
我需要用可变数量的空格字符替换制表符,以保持列对齐。请注意,我确实不希望每个选项卡都替换为 8 个空格。相反,我希望在第 1 行第 1 列之后有 5 个空格(8 - 长度(ABC)= 5),在第 1 行第 2 列之后有 4 个空格(8 - 长度(1437)= 4),等等。
有没有 linux 工具可以帮我做,还是我自己写?
【问题讨论】:
-
试试:
column -t file -
这正是我所需要的,只需提供
-s ' '即可获得完全相同的视觉输出。谢谢! -
column无法产生预期的输出,因为它只是在所有列之间添加固定数量的空白,其中每个列的宽度由该列中最长的非空白链决定。所以它会在输入的最后一行GHIJ的结尾和2的开头之间添加 2 个空格(或您指定的任何数字),但它也会在3之间使用 2 个空格而不是 7 个空格和0在同一行。它是一个很好的工具,可以创建可视化的表格输出,但不能保留制表符分隔输入的间距。
标签: bash awk tabs whitespace