我有一个类似于以下内容的文件
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} ...
关于如何实现所需输出的任何想法?
答案 0 :(得分:2)
也许这个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
}
答案 1 :(得分:1)
略有不同的方法,仍然使用awk:
foreach (var item in Items)
{
Button itemButton = new Button();
itemButton.Text = item.name;
itemButton.fieldType = item.type;
itemButton.fieldId = item.id;
itemButton.Click += itemHandler;
// add the button in the child panel
CustomItemPanel childItemPanel = new CustomItemPanel();
childItemPanel.Controls.Add(itemButton);
// add to the clicked container panel
containerPanel.Controls.Add(childItemPanel);
}
使用$ 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
答案 2 :(得分:0)
无需复杂化......
$ pr -5ats' ' <file
1 1 1 1 1
1 12 2 2 2
2 2 2 2 3
4