Split large file into 24 small files on one hour basis


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers Split large file into 24 small files on one hour basis
# 15  
Old 07-01-2019
Bash shell and os is Linux
# 16  
Old 07-01-2019
The proposal has been tested on linux / bash and worked fine. What's your bash version? What's the result of the paste command (without the pipe).
# 17  
Old 07-02-2019
sorry Rudic it worked fine..!
but this script u had given below is working for 09:55-10:55
can u help me with along seconds too 09:55:39---10:55:39

Code:
paste <(date +%s -f<(cut -d, -f1 file) 2>&1) file | awk -F"\t" '
NR == 1         {sub ($1 FS, "")
                 HD = $0
                }
NR == 2         {BDT = $1 - $1%60
                }
NR >  1         {HCNT = int (($1 - BDT)/3600)
                 if (HCNT > 23) exit
                 FN = "summaryReport_LoadTest_" HCNT ".csv"
                 sub ($1 FS, "")
                 if (!X[FN]++) print HD  >  FN
                 print  >  FN
                }
'


because when i checked the lines when i counted with 09:55-10:55 i got it as 827785
but the script which i wrote is calculating from 09:55:39-10:55:39 is giving 838331 lines
the problem with my script is it is running for 10min where as the awk solution u had given is running for 1 min
so could you please modify the script which will help with seconds 09:55:39---10:55:39????
# 18  
Old 07-02-2019
That should not be a problem as there is one statement that strips the seconds from the start timestamp found in the first data line. Can you identify and correct it to your needs?


If you supply the start time from the outside, the problem should not exist.


Be aware that in the sample data you supplied 5 lines would NOT print if you define the start time as 09:55:39 (that's the reason I stripped the seconds, BTW).
# 19  
Old 07-03-2019
Sorry Rudic..I I could see already the first line is converting the timestamp to epoch along with seconds.There is something which need to be modified in the body of the script
i tried it... but i am not successful and i am very sorry for that as i am very new to AWK.
could you please help me in this if you dont mind..!


Code:
$ paste <(date +%s -f<(cut -d, -f1 file) 2>&1) file |head -3
timeStamp,elapsed,label,responseCode,responseMessage,threadName,dataType,success,failureMessage,bytes,grpThreads,allThreads,URL,Latency,IdleTime
1558360539      2019-05-20 09:55:39.945,142,GETHome,200,OK,SequenceLength 1-50,text,true,,9937,1,2,http://bus00bpo.us.oracle.com:8181/,141,0
1558360533      2019-05-20 09:55:33.820,217,GETHome,200,OK,SequenceLength 1-50,text,true,,9937,1,2,http://bus00bpo.us.oracle.com:8181/,217,0
$


Last edited by Raghuram717; 07-03-2019 at 04:07 AM..
# 20  
Old 07-05-2019
I got the script for seconds...i just removed the $1%60 and it worked fine for 09:55:39-10:55:38
Thanks for the help

Final working script:
Code:
paste <(date +%s -f<(cut -d, -f1 file) 2>&1) file | awk -F"\t" '
NR == 1         {sub ($1 FS, "")
                 HD = $0
                }
NR == 2         {BDT = $1 - $1
                }
NR >  1         {HCNT = int (($1 - BDT)/3600)
                 if (HCNT > 23) exit
                 FN = "summaryReport_LoadTest_" HCNT ".csv"
                 sub ($1 FS, "")
                 if (!X[FN]++) print HD  >  FN
                 print  >  FN
                }
'

# 21  
Old 07-05-2019
Quote:
Originally Posted by Raghuram717
I got the script for seconds...i just removed the $1%60 and it worked fine for 09:55:39-10:55:38
Thanks for the help

Final working script:
Code:
paste <(date +%s -f<(cut -d, -f1 file) 2>&1) file | awk -F"\t" '
NR == 1         {sub ($1 FS, "")
                 HD = $0
                }
NR == 2         {BDT = $1 - $1
                }
NR >  1         {HCNT = int (($1 - BDT)/3600)
                 if (HCNT > 23) exit
                 FN = "summaryReport_LoadTest_" HCNT ".csv"
                 sub ($1 FS, "")
                 if (!X[FN]++) print HD  >  FN
                 print  >  FN
                }
'

That script should not output anything as BDT will be calculated to be zero, the epoch origin, and any timestamp in the data file will yield HCNT (hour count) gt 23 and force the script to exit.
But - you were on the right track with your comment.

Last edited by RudiC; 07-05-2019 at 10:18 AM..
This User Gave Thanks to RudiC For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Split large xml into mutiple files and with header and footer in file

Split large xml into mutiple files and with header and footer in file tried below it splits unevenly and also i need help in adding header and footer command : csplit -s -k -f my_XML_split.xml extrfile.xml "/<Document>/" {1} sample xml <?xml version="1.0" encoding="UTF-8"?><Recipient>... (36 Replies)
Discussion started by: karthik
36 Replies

2. UNIX for Beginners Questions & Answers

Split large file into smaller files without disturbing the entry chunks

Dears, Need you help with the below file manipulation. I want to split the file into 8 smaller files but without cutting/disturbing the entries (meaning every small file should start with a entry and end with an empty line). It will be helpful if you can provide a one liner command for this... (12 Replies)
Discussion started by: Kamesh G
12 Replies

3. Shell Programming and Scripting

Breaking large file into small files

Dear all, I have huge txt file with the input files for some setup_code. However for running my setup_code, I require txt files with maximum of 1000 input files Please help me in suggesting way to break down this big txt file to small txt file of 1000 entries only. thanks and Greetings, Emily (12 Replies)
Discussion started by: emily
12 Replies

4. Shell Programming and Scripting

How to split this txt file into small files?

Dear shell experts, I would like to spilt a txt file into small ones. However, I did not know how to program use shell. If someone could help, it is greatly appreciated! Specifically, I supposed there is file named A.txt. The content of the file likes this: Subject run condtion ACC time... (3 Replies)
Discussion started by: psychmyluo
3 Replies

5. Shell Programming and Scripting

Split a large array into small chunks

Hi, I need to split a large array "@sharedArray" into 10 small arrays. The arrays should be like @sharedArray1,@sharedArray2,@sharedArray3...so on.. Can anyone help me with the logic to do so :(:confused: (6 Replies)
Discussion started by: rkrish
6 Replies

6. Shell Programming and Scripting

Split large zone file dump into multiple files

I have a large zone file dump that consists of ; DNS record for the adomain.com domain data1 data2 data3 data4 data5 CRLF CRLF CRLF ; DNS record for the anotherdomain.com domain data1 data2 data3 data4 data5 data6 CRLF (7 Replies)
Discussion started by: Bluemerlin
7 Replies

7. Shell Programming and Scripting

script to splite large file to number of small files

Dear All, Could you please help me to split a file contain around 240,000,000 line to 4 files all equally likely , note that we need to maintain that the end of each file should started by start flage (MSISDN) and ended by end flag (End), also the number of the line between the... (10 Replies)
Discussion started by: ahmed.gad
10 Replies

8. Shell Programming and Scripting

Split large file and add header and footer to each small files

I have one large file, after every 200 line i have to split the file and the add header and footer to each small file? It is possible to add different header and footer to each file? (7 Replies)
Discussion started by: ashish4422
7 Replies

9. Shell Programming and Scripting

Split a file into 16 small files

Hi I want to split a file that has 'n' number of records into 16 small files. Can some one suggest me how to do this using Unix script? Thanks rrkk (10 Replies)
Discussion started by: rrkks
10 Replies

10. Shell Programming and Scripting

Splitting large file into small files

Hi, I need to split a large file into small files based on a string. At different palces in the large I have the string ^Job. I need to split the file into different files starting from ^Job to the last character before the next ^Job. Also all the small files should be automatically named.... (4 Replies)
Discussion started by: dncs
4 Replies
Login or Register to Ask a Question