Bash Shell脚本中的文本转换

Bash Shell脚本中的文本转换,bash,shell,unix,Bash,Shell,Unix,我需要你的帮助。正在寻找可以将以下输入文件转换为所需输出的shell脚本。我们使用bashshell 输入文件(.txt)包含: ,,,,Jan_1,Jan_2,Jan_3,Jan_4,Jan_5,.........Jan_30,Feb_1,Feb,2...Dec_31 a,b,c,d,88,89,91,.........(365 numbers) e,f,g,h,34,23,17,..........(365 numbers) i,j,k,l,52,63,86,.........(365 nu

我需要你的帮助。正在寻找可以将以下输入文件转换为所需输出的shell脚本。我们使用bashshell

输入文件(.txt)包含:

,,,,Jan_1,Jan_2,Jan_3,Jan_4,Jan_5,.........Jan_30,Feb_1,Feb,2...Dec_31
a,b,c,d,88,89,91,.........(365 numbers)
e,f,g,h,34,23,17,..........(365 numbers)
i,j,k,l,52,63,86,.........(365 numbers)
预期产出:

a,b,c,d,Jan_1,88
a,b,c,d,Jan_2,89
a,b,c,d,Jan_3,91
....
....
a,b,c,d,Jan_31,656
a,b,c,d,Feb_1,23
....
....
a,b,c,d,Dec_31,656
e,f,g,h,Jan_1,34
e,f,g,h,Jan_2,23
e,f,g,h,Jan_3,17
...
...
...
e,f,g,h,Aug_3,454
....
...
e,f,g,h,Dec_31,878    
i,j,k,l,Jan_1,52
i,j,k,l,Jan_2,63
i,j,k,l,Jan_3,86
 .....
 ....
 i,j,k,l,Dec_31,23
输入文件中的记录数约为13k。 请给我一些建议

我考虑将第一行存储到一个数组中,然后将前四列视为一个矩阵,然后进行交叉乘法以获得转置的效果

/

/将第一行存储在数组1中
//从第二行开始,用这个来得到矩阵
当IFS=,read-ra-arr;做
##无法将此arr与数组1相乘
echo${arr[@]:0:4}
完成<'工作文件。

txt'

Awk
可能会有帮助

awk 'BEGIN{FS=","}NR>1{
 for(i=1;i<=3;i++){
   for(j=1;j<4;j++){
   printf("%s,",$j)
   }
 printf("Jan_%d,%s",i,$(i+j))
 print ""
 }
}' filename
a,b,c,Jan_1,10
a,b,c,Jan_2,20
a,b,c,Jan_3,30
e,f,g,Jan_1,11
e,f,g,Jan_2,21
e,f,g,Jan_3,31
i,j,k,Jan_1,12
i,j,k,Jan_2,22
i,j,k,Jan_3,32
awk'BEGIN{FS=“,”}NR>1{

对于(i=1;我将来到Stackoverflow。请在Stackoverflow上参观,您的问题需要您尝试解决问题,然后是您遇到的问题,然后是您的标题中反映的问题。请返回并编辑此问题,使其以这种方式呈现。我投票结束此问题,因为它似乎是一个r是对工具或解决方案的建议,而不是对您自己的代码的帮助请求。这使您的问题脱离StackOverflow的主题。如果评估不正确,并且您确实需要帮助修复您自己的代码,那么请和我将愉快地收回我的投票。请注意,正如其他评论所提到的,您所做的工作在你的问题中是必须的。下次提问时,请添加你的代码段。SO通常不鼓励没有真正尝试解决问题的答案。谢谢@sjsam。但挑战是数字可能会有所不同。我只是给出了这些数字作为说明。列数为365天(例如:1月1日、1月2日、1月3日、2月1日、2月28日、12月1日、12月31日)。
awk 'BEGIN{FS=","}NR>1{
 for(i=1;i<=3;i++){
   for(j=1;j<4;j++){
   printf("%s,",$j)
   }
 printf("Jan_%d,%s",i,$(i+j))
 print ""
 }
}' filename
a,b,c,Jan_1,10
a,b,c,Jan_2,20
a,b,c,Jan_3,30
e,f,g,Jan_1,11
e,f,g,Jan_2,21
e,f,g,Jan_3,31
i,j,k,Jan_1,12
i,j,k,Jan_2,22
i,j,k,Jan_3,32