Divide large data files into smaller files


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Divide large data files into smaller files
# 1  
Old 07-16-2010
Divide large data files into smaller files

Hello everyone!

I have 2 types of files in the following format:

Code:
1) *.fa

>1234
...some text...
>2345
...some text...
>3456
...some text...
.
.
.
.

2) *.info

>1234
...some numbers...
>2345
...some numbers...
>3456
...some numbers...
.
.
.
.

I need to split these huge files (~300-400Mb), into smaller files (around 30-40Mb each). Also, I don't want to divide the data (i.e. every record starting with '>' should have its corresponding information in one smaller file).

Can someone please suggest a way to do this using unix commands?

Thanks!!!
# 2  
Old 07-17-2010
Could you please elaborate more on the criteria you want to use to split the file ?
# 3  
Old 07-17-2010
tell us your expect output

At first, you can use paste to make each record in one line.

Code:
$ paste - - < file.info
>1234   ...some numbers...
>2345   ...some numbers...
>3456   ...some numbers...

$ paste - - < file.fa
>1234   ...some text...
>2345   ...some text...
>3456   ...some text...


Last edited by rdcwayx; 07-17-2010 at 03:08 AM..
# 4  
Old 07-17-2010
use csplit
# 5  
Old 07-19-2010
Hello Everyone...
Thanks for your responses!!!

I need to divide my huge data file into smaller files (of say 10 MB or so). I have to feed this file ( as smaller sub-files) into another program.

The line numbers in each file vary. The program cannot take a huge file together, and needs chunks of data!!

I hope I am a little more clear now??

Thanks!
# 6  
Old 07-19-2010
You still don't tell us clearly what you ask for.

Give some real datas, and the expect output.
# 7  
Old 07-20-2010
Quote:
Originally Posted by ad23
...
I need to split these huge files (~300-400Mb), into smaller files (around 30-40Mb each). Also, I don't want to divide the data (i.e. every record starting with '>' should have its corresponding information in one smaller file).
If I correctly understand your requirement and assuming the above format of the big files,
Code:
awk '/^>[0-9]+$/ && c >=int(n/s) { k++; c=1; close(f) }
     { print > (f=FILENAME"_"k+1); c++ }' s=10 n="$(wc -l < bigfile)" bigfile

For different smaller files' sizes adjust the value of the variable s.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. 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

2. Shell Programming and Scripting

Sed: Splitting A large File into smaller files based on recursive Regular Expression match

I will simplify the explaination a bit, I need to parse through a 87m file - I have a single text file in the form of : <NAME>house........ SOMETEXT SOMETEXT SOMETEXT . . . . </script> MORETEXT MORETEXT . . . (6 Replies)
Discussion started by: sumguy
6 Replies

3. Shell Programming and Scripting

Divide an EBCDIC files into multiple files based on value at 45-46 bytes

Hi All, I do have an EBCDIC file sent from the z/os , this file has records with different record types in it, the type of record is identified by bytes 45-46 like value 12 has employee record value 14 has salaray record and etc.... we do now want to split the big ebcdic file into multiple... (3 Replies)
Discussion started by: okkadu
3 Replies

4. Shell Programming and Scripting

Help needed - Split large file into smaller files based on pattern match

Help needed urgently please. I have a large file - a few hundred thousand lines. Sample CP START ACCOUNT 1234556 name 1 CP END ACCOUNT CP START ACCOUNT 2224444 name 1 CP END ACCOUNT CP START ACCOUNT 333344444 name 1 CP END ACCOUNT I need to split this file each time "CP START... (7 Replies)
Discussion started by: frustrated1
7 Replies

5. Shell Programming and Scripting

Finding data in large no. of files

I need to find some data in a large no. of files. The data is in the following format : VALUE A VALUE B VALUE C VALUE D 10 4 65 1 12 4.5 65.5 2 10.75 5.1 ... (2 Replies)
Discussion started by: cooker97
2 Replies

6. Shell Programming and Scripting

Divide data with specific column values into separate files

hello! i need a little help from you :) ... i need to split a file into separate files depending on two conditions using scripting. The file has no delimiters. The conditions are col 17 = "P" and col 81 = "*", this will go to one output file; col 17 = "R" and col 81 = " ". Here is an example. ... (3 Replies)
Discussion started by: chanclitas
3 Replies

7. Shell Programming and Scripting

Divide data into separate files

frnds: i want to divide data on the behalf of dotted line and redirectd into new files ) ------------------------- M-GET CONFIRMATION ( ------------------------- M-GET CONFIRMATION ( INVOKE IDENTIFIER final data shuld be into 3 files ...... (6 Replies)
Discussion started by: dodasajan
6 Replies

8. UNIX for Dummies Questions & Answers

multiple smaller files from one large file

I have a file with a simple list of ids. 750,000 rows. I have to break it down into multiple 50,000 row files to submit in a batch process.. Is there an easy script I could write to accomplish this task? (2 Replies)
Discussion started by: rtroscianecki
2 Replies

9. UNIX for Dummies Questions & Answers

splitting the large file into smaller files

hi all im new to this forum..excuse me if anythng wrong. I have a file containing 600 MB data in that. when i do parse the data in perl program im getting out of memory error. so iam planning to split the file into smaller files and process one by one. can any one tell me what is the code... (1 Reply)
Discussion started by: vsnreddy
1 Replies

10. Shell Programming and Scripting

how to divide single large log file into multiple files.

Can you please help me with writing script for following purpose. I have to divide single large web access log file into multiple log files based on dates inside the log file. For example: if data is logged in the access file for jan-10-08 , jan-11-08 , Jan-12-08 then make small log file... (1 Reply)
Discussion started by: kamleshm
1 Replies
Login or Register to Ask a Question