如何将单列变成三列?

如何将单列变成三列?

如何将单列数据分布到三列上?

输入:

A
B
C
A
B
C
.
.
.

我想要以下结果:

A B C
A B C
A B C
.
.
.

答案1

鉴于输入数据与名为 的文件中的问题中所写的完全相同file,您可以paste像这样使用:

$ paste - - - <file
A       B       C
A       B       C
.       .       .

输出以制表符作为字段分隔符,但可以使用以下-d选项更改:

$ paste -d ' ' - - - <file
A B C
A B C
. . .

paste三个破折号对应于输出中的列,这些列将一次从一行输入中填充。

在您的系统上查看man paste

答案2

xargs

$ xargs -n3 < file
A B C
A B C
. . .

每个命令行最多输出三个参数。请注意,我省略了要执行的命令,echo如果丢失,则默认为该命令。它是一样的

xargs -n3 echo < file

答案3

在非常“高尔夫”的形式中,您可以使用以下(GNU)awk命令:

awk '{cache=(n%3) ? cache" "$0 : $0; n++; if (n % 3 == 0) {print cache; cache="";}}' inputfile.txt

以更易读的形式:

awk '{if (n%3==0) cache=$0; else cache=cache" "$0; n++; if (n%3==0) {print cache; cache="";}}' inputfile.txt

awk程序使用一个内部行计数器n(隐式初始化为 0,这很重要)和一个内部缓存变量,cache用于累积三行的内容,以空格 ( " ") 分隔,并每三行“刷新”缓存。

3您可以通过替换和 来调整您的需求," "其中cache=cache" "$0需要不同的行数和“行令牌分隔符”。

相关内容