使用AWK操作CSV文件

使用AWK操作CSV文件,awk,Awk,我是awk新手,我被要求格式化以下csv文件(其中每行代表一天,每小时的值) 。。。。以此类推5天,在7个不同的文件中使用以下格式: 4 UC.DB ************************* * ***************************

我是
awk
新手,我被要求格式化以下
csv
文件(其中每行代表一天,每小时的值)

。。。。以此类推5天,在7个不同的文件中使用以下格式:

4    UC.DB                                  
*************************                               
*                               
***************************                         
*                                       
7 UC_SYSTEM_SCHED,2;0,2;1,2;2,2;3,2;4,2;5,2;6,2;7,2;8,2;9,2;10,2;11,2;12,2;13,2;14,2;15,2;16,2;17,2;18,2;19,2;20,2;21,2;22,2;23
1,3244,3138,3068,3083,3231,3624,3932,4018,4095,4195,4260,4328,4400,4431,4423,4418,4377,4331,4367,4354,4220,3919,3647,3415   
 0                                      
*                               
 0                                      
0
目的是从具有7个不同行的
CSV
文件中创建7个具有此格式的不同文件。如您所见,前7行对于所有创建的7个文件都是相同的(8行中的“1”和9、10、11、12行也将保持不变)。唯一的区别是每天导入的数据

这就是我迄今为止所尝试的:

awk -F "," NR==1'{printf "4, UC.DB\n***************\n*\n***************\n*\n7,UC_SYSTEM_SCHED,2;0,2;1,2;2,2;3,2;4,2;5,2;6,2;7,2;8,2;9,2;10,2;11,2;12,2;13,2;14,2;15,2;16,2;17,2;18,2;19,2;20,2;21,2;22,2;23\n1,"}''NR==1'UC_Load_Data.csv > awk.file
对于前8行,它工作得很好,但是当我尝试添加最后4行时,会不断出现错误

我知道这可能没有多大意义,理解起来也很混乱,但是,我非常感谢你的时间,希望你能帮助我。
谢谢你

您的语法错误。你的:

awk -F "," NR==1'{printf "..."}''NR==1'UC_Load_Data.csv
在有效的awk语法中(并假设尾随NR==1是一个打字错误),将是:

awk -F "," 'NR==1{printf "...\n"}' UC_Load_Data.csv
我想你想要的是这样的:

awk -F "," '
   BEGIN { hdr="4, UC.DB\n******"\n*\n*******\n*\n7,UC_SYSTEM_SCHED,2;0,2;...23\n" }
   { print hdr NR "," $0 > "file_" NR }
' UC_Load_Data.csv

你的格式太乱了。我试图改进它,但输出格式似乎不好。请检查它,因为它将对希望帮助您的所有其他用户有所帮助。
awk -F "," '
   BEGIN { hdr="4, UC.DB\n******"\n*\n*******\n*\n7,UC_SYSTEM_SCHED,2;0,2;...23\n" }
   { print hdr NR "," $0 > "file_" NR }
' UC_Load_Data.csv