2012-10-18 26 views
1

操縱一個CSV文件,我在awk是新的,我被要求格式化以下csv文件(其中每一行代表一個一天值爲每個小時)使用AWK

3244,3138,3068,3083,3231,3624,3932,4018,4095,4195,4260,4328,4400,4431,4423,4418,4377,4331,4367,4354,4220,3919,3647,3415 
3280,3187,3142,3165,3353,3772,4093,4126,4151,4180,4146,4141,4111,4071,4009,3942,3902,3871,3997,4005,3838,3657,3492,3332 

....和等了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 

的目的是建立與來自CSV文件,將有7個不同的行這種格式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行,我不斷收到錯誤。

我知道這毫無意義,但理解起來很困惑,但是,我非常感謝你的時間,希望你能幫助我。 謝謝.. !!!

+1

你的格式很亂。我試圖改進它,但輸出格式似乎不好。請檢查它,因爲它會對所有希望幫助您的用戶有所幫助。 – Birei

回答

0

您的語法錯誤。您:

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