Awk 基于行值将值移动到列
日期块的输入文件每4行更改一次(第1列)。日期061218和061418的示例,但日期061318的示例除外,日期061318包含8行 然后,如果日期在5行之后没有变化,如日期061318的示例,在这种情况下,需要将第二部分第5-8行的值添加到第1-4行的末尾。要正确地获取所需的输出文件 输入文件Awk 基于行值将值移动到列,awk,Awk,日期块的输入文件每4行更改一次(第1列)。日期061218和061418的示例,但日期061318的示例除外,日期061318包含8行 然后,如果日期在5行之后没有变化,如日期061318的示例,在这种情况下,需要将第二部分第5-8行的值添加到第1-4行的末尾。要正确地获取所需的输出文件 输入文件 061218,2660,2660,2661 061218,0,0,0,0 061218,48,30,569 061218,SD/05,F1/R0,SD/05 061318,2654,2654 0613
061218,2660,2660,2661
061218,0,0,0,0
061218,48,30,569
061218,SD/05,F1/R0,SD/05
061318,2654,2654
061318,0,0
061318,114,60
061318,SD/05,F1/R0
061318,2666
061318,0
061318,1
061318,F1/R0
061418,2648,2648,2649
061418,0,0,0
061418,871,868,876
061418,SD/05,F1/R0,SD/05
061218,2660,2660,2661
061218,0,0,0,0
061218,48,30,569
061218,SD/05,F1/R0,SD/05
061318,2654,2654,2666
061318,0,0,0
061318,114,60,1
061318,SD/05,F1/R0,F1/R0
061418,2648,2648,2649
061418,0,0,0
061418,871,868,876
061418,SD/05,F1/R0,SD/05
输出文件
061218,2660,2660,2661
061218,0,0,0,0
061218,48,30,569
061218,SD/05,F1/R0,SD/05
061318,2654,2654
061318,0,0
061318,114,60
061318,SD/05,F1/R0
061318,2666
061318,0
061318,1
061318,F1/R0
061418,2648,2648,2649
061418,0,0,0
061418,871,868,876
061418,SD/05,F1/R0,SD/05
061218,2660,2660,2661
061218,0,0,0,0
061218,48,30,569
061218,SD/05,F1/R0,SD/05
061318,2654,2654,2666
061318,0,0,0
061318,114,60,1
061318,SD/05,F1/R0,F1/R0
061418,2648,2648,2649
061418,0,0,0
061418,871,868,876
061418,SD/05,F1/R0,SD/05
我试过:
awk -F, '{a[$1]=a[$1]?a[$1]","$2:$2;}END{for (i in a)print i, a[i];}' OFS=, file
提前感谢如果您的输入文件与显示的样本相同(您在评论中提到的是),请尝试以下内容
awk '
BEGIN{
FS=OFS=","
}
prev!=$1 && prev{
for(i=1;i<=count;i++){
print prev,a[prev,i]
}
prev=count=""
}
{
prev=$1
sub(/[^,]*,/,"")
if(count==4){
count=1
}
else{
count++
}
a[prev,count]=a[prev,count]?a[prev,count] OFS $0:$0
}
END{
if(prev){
for(i=1;i<=count;i++){
print prev,a[prev,i]
}
}
}' Input_file
awk'
开始{
FS=OFS=“,”
}
上一个=$1&prev{
对于(i=1;我能为一个特定的日期添加12/16/etc行吗?另外,你必须展示你试图解决这个问题的方法。欢迎访问。Stack Overflow是一个面向专业和热心程序员的问答网站。目标是在你的问题中添加一些你自己的代码,以显示你为解决这个问题所做的研究工作self.Sundeep.日期块每4行更改一次,这将是固定的。我尝试过这样的方法:awk-F,{a[$1]=a[$1]?a[$1],“$2:$2;}END{for(I in a)print I,a[I];}”of s=,file