在 Linux 中将定界文件转换为固定宽度

Convert delimited file to fixed width in Linux

使用 bash 可用的工具,如何转换分隔数据

foo|bbbaaarrr|bazz

固定宽度数据

foo      bbbaaarrrbazz     EOL   

我尝试使用列作为文档暗示我可以定义列宽,但没有用。 我确信使用 sed 或 awk 很简单,但我对它们不熟悉。

以下应该适合您:

column -t -s '|' input_file_here

它将输入文件转换为table格式。输入记录分隔符由 -s 指定。如果您想要在字段中填充 space 以外的内容,请使用 -o 设置输出分隔符。输出分隔符默认为两个 space,因此输出中每列之间将有两个 space。

示例:

$ cat input
hello|world|testing
a|b|c
another|test|line

$ column -t -s '|' input
hello    world  testing
a        b      c
another  test   line

http://man7.org/linux/man-pages/man1/column.1.html


编辑:

如果您需要每个字段都是固定长度,您可以使用 awk。您需要为您的文件设置输入分隔符,但像这样应该可以工作:

$ awk -F '|' '{ for (i=1; i<=NF; i++) { printf("%-10s", $i); } print ""; }' input
hello     world     testing
a         b         c
another   test      line

只需更改 printf 语句中指定的字段宽度。