Awk 基于行值将值移动到列

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

日期块的输入文件每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
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