1

私は初心者でawk、次のファイルをフォーマットするように求められましたcsv(ここで、各行は 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
3280,3187,3142,3165,3353,3772,4093,4126,4151,4180,4146,4141,4111,4071,4009,3942,3902,3871,3997,4005,3838,3657,3492,3332

.... 次の形式の 7 つの異なるファイルで、さらに 5 日間続きます。

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

目的は、CSV7 つの異なる行を持つファイルから、この形式で 7 つの異なるファイルを作成することです。ご覧のとおり、最初の 7 行は、作成された 7 つのファイルすべてで同じになります (8 行と 9、10、11、12 行の「1」も同じままです)。唯一の違いは、毎日インポートされるデータです。

これは私がこれまでに試したことです:

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 行を追加しようとするとエラーが発生し続けます。

あまり意味がなく、わかりにくいかもしれませんが、お時間をいただきありがとうございます。ご協力いただければ幸いです。ありがとうございました..!!!

4

1 に答える 1

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
于 2012-10-18T14:40:45.943 に答える