每5个条目后拆分一列-awk

每5个条目后拆分一列-awk,awk,rows,Awk,Rows,我有一个如下所示的文件 1 1 1 1 1 1 12 2 2 2 2 2 2 2 3 4 我要做的是将此列转换为多行。每个新行/行应该在5个条目之后开始,因此输出如下 1 1 1 1 1 1 12 2 2 2 2 2 2 2 3 4 我试图通过使用 awk '{printf "%s" (NR%5==0?"RS:FS),$1}' file 但是我得到了以下错误 awk: line 1: runaway string constant "RS:FS),$1} ... 关于如何达到预期的输出有

我有一个如下所示的文件

1
1
1
1
1
1
12
2
2
2
2
2
2
2
3
4
我要做的是将此列转换为多行。每个新行/行应该在5个条目之后开始,因此输出如下

1 1 1 1 1
1 12 2 2 2
2 2 2 2 3
4
我试图通过使用

awk '{printf "%s" (NR%5==0?"RS:FS),$1}' file
但是我得到了以下错误

awk: line 1: runaway string constant "RS:FS),$1} ...

关于如何达到预期的输出有什么想法吗?

也许这个awk one liner会有所帮助

awk '{if (NR%5==0){a=a $0" ";print a; a=""} else a=a $0" "}END{print}' file
输出:

1 1 1 1 1
1 12 2 2 2
2 2 2 2 3
4
更长的awk:

{
    if (NR%5==0)
    {
       a=a $0" ";
       print a;
       a="";
    }
    else
    {
       a=a $0" ";
    }
 }
 END
 {
    print
 }

略微不同的方法,仍然使用awk:

$ awk '{if (NR%5) {ORS=""} else {ORS="\n"}{print " "$0}}' input.txt
 1 1 1 1 1
 1 12 2 2 2
 2 2 2 2 3
 4
使用
perl

$ perl -p -e 's/\n/ / if $.%5' input.txt
1 1 1 1 1
1 12 2 2 2
2 2 2 2 3
4 

没有必要把事情复杂化

$ pr -5ats' ' <file

1 1 1 1 1
1 12 2 2 2
2 2 2 2 3
4

$pr-5ats''RS前面有一个双引号@123谢谢你的评论!就是这样!!!但是,由于我不太熟悉
awk
,出现了什么问题?坦率地说,我对
printf“%s”(NR%5==0?”RS:FS)的$1命令也不确定;我刚在SE上找到它。你能给出一个答案,解释一下命令序列吗?