以任意行数的列打印文件

以任意行数的列打印文件

我有这个文件:

line1
line2
line3
line4
line5
line6
line7
line8
line9

我想用这种结构跨 3 列打印它,以便第一列有lines 1-2-3,第二列有lines 4-5,最后一列有lines 6-7-8-9(或文件的其余部分):

line1 line4 line6
line2 line5 line7
line3       line8
            line9

本质上我想以输出分发到的方式打印文件列,每列都有预定的(并且可能彼此不同)行数。如果可能的话,我想保留行中的前导/尾随空格。我怎样才能做到这一点?

我摆弄 和columnspr但我什至无法接近。

答案1

您可以使用merge的功能pr,将多个文件合并到列中。

像这样的事情会起作用:

pr -J -m <(sed -n 1,3p file) <(sed -n 4,5p file) <(sed -n 6,9p file)

答案2

另一种选择是使用paste

paste <(sed '1,3!d' infile) <(sed '4,5!d' infile) <(sed '6,$!d' infile)

相关内容