Split a file into multiple files based on first two digits of file.


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Split a file into multiple files based on first two digits of file.
# 1  
Old 04-10-2012
Split a file into multiple files based on first two digits of file.

Hi ,
I do have a fixedwidth flatfile that has data for 10 different datasets each identified by the first two digits in the flatfile.
01 in the first two digit position refers to Set A
02 in the first two digit position refers to Set B and so on
I want to genrate 10 different files from my fixedwidth file , each file having it's own record set.
File A.dat having only 01 records.
File B.dat having only 02 records and so on.

Please Let me know how we can achieve this.
# 2  
Old 04-10-2012
Code:
awk '{ print > substr($0,1,2) ".dat" }' filename1 filename2 filename3 ...

will use the first two characters of each line to print into the corresponding ".dat" file.
# 3  
Old 04-10-2012
Hi Corona,
Thank you very much
this works good but how can I get specific output filename to specific first two digits like
01 will get filename as MEM.dat
02 will get filename as DEPT.dat

also there is requirement where 04 and 05 both go into single file called sale.dat
# 4  
Old 04-10-2012
In that case create an associative array that maps the 2 digits with the desired filename...read/parse each input file record...and output it to the specific filename based on the numerical code.
# 5  
Old 04-10-2012
Like this...

Code:
awk 'BEGIN{split("MEM DEPT X SALE SALE",file," ")}{print > file[$1+0]".dat"}' infile1 infile2

--ahamed
# 6  
Old 04-10-2012
Quote:
Originally Posted by shamrock
In that case create an associative array that maps the 2 digits with the desired filename...read/parse each input file record...and output it to the specific filename based on the numerical code.
Sorry to ask but how to do this.

---------- Post updated at 04:51 PM ---------- Previous update was at 04:42 PM ----------

Quote:
Originally Posted by ahamed101
Like this...

Code:
awk 'BEGIN{split("MEM DEPT X SALE SALE",file," ")}{print > file[$1+0]".dat"}' infile1 infile2

--ahamed
Thank you Ahmad , this works like a charm..could you please explain me what command is actually doing...
# 7  
Old 04-11-2012
It creates an array "file" with the output file names. file[1]=MEM, file[2]=DEPT etc. The data from the actual file is used as the index for obtaining the file names from this array and print the data.

--ahamed
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 file into multiple files based on empty lines

I am using below code to split files based on blank lines but it does not work. awk 'BEGIN{i=0}{RS="";}{x="F"++i;}{print > x;}' Your help would be highly appreciated find attachment of sample.txt file (2 Replies)
Discussion started by: imranrasheedamu
2 Replies

2. Shell Programming and Scripting

Split a single file into multiple files based on a value.

Hi All, I have the sales_data.csv file in the directory as below. SDDCCR; SOM ; MD6546474777 ;05-JAN-16 ABC ; KIRAN ; CB789 ;04-JAN-16 ABC ; RAMANA; KS566767477747 ;06-JAN-16 ABC ; KAMESH; A33535335 ;04-JAN-16 SDDCCR; DINESH; GD6674474747 ;08-JAN-16... (4 Replies)
Discussion started by: ROCK_PLSQL
4 Replies

3. Shell Programming and Scripting

Split a big file into multiple files based on first four characters

I have a requirement to split a huge file to smaller text files based on first four characters which look like ABCD 1234 DFGH RREX : : : : : 0000 Each of these records are OF EQUAL bytes with a different internal layout based on the above first digit identifier.. Any help to start... (5 Replies)
Discussion started by: etldev
5 Replies

4. Shell Programming and Scripting

awk script to split file into multiple files based on many columns

So I have a space delimited file that I'd like to split into multiple files based on multiple column values. This is what my data looks like 1bc9A02 1 10 1000 FTDLNLVQALRQFLWSFRLPGEAQKIDRMMEAFAQRYCQCNNGVFQSTDTCYVLSFAIIMLNTSLHNPNVKDKPTVERFIAMNRGINDGGDLPEELLRNLYESIKNEPFKIPELEHHHHHH 1ku1A02 1 10... (9 Replies)
Discussion started by: viored
9 Replies

5. Shell Programming and Scripting

How to split file into multiple files using awk based on 1 field in the file?

Good day all I need some helps, say that I have data like below, each field separated by a tab DATE NAME ADDRESS 15/7/2012 LX a.b.c 15/7/2012 LX1 a.b.c 16/7/2012 AB a.b.c 16/7/2012 AB2 a.b.c 15/7/2012 LX2 a.b.c... (2 Replies)
Discussion started by: alexyyw
2 Replies

6. Shell Programming and Scripting

Split a file into multiple files based on field value

Hi, I've one requirement. I have to split one comma delimited file into multiple files based on one of the column values. How can I achieve this Unix Here is the sample data. In this case I have split the files based on date column(c4) Input file c1,c2,c3,c4,c5... (1 Reply)
Discussion started by: manasvi24
1 Replies

7. Shell Programming and Scripting

split XML file into multiple files based on pattern

Hello, I am using awk to split a file into multiple files using command: nawk '{ if ( $1 == "<process" ) { n=split($2, arr, "\""); file=arr } print > file }' processes.xml <process name="Process1.process"> ... (3 Replies)
Discussion started by: chiru_h
3 Replies

8. Shell Programming and Scripting

Split a file into multiple files based on the input pattern

I have a file with lines something like. ...... 123_start ...... ....... 123_end .... ..... 456_start ...... ..... 456_end .... ..... 789_start .... .... 789_end (6 Replies)
Discussion started by: abinash
6 Replies

9. Shell Programming and Scripting

Split single file into multiple files based on the number in the column

Dear All, I would like to split a file of the following format into multiple files based on the number in the 6th column (numbers 1, 2, 3...): ATOM 1 N GLY A 1 -3.198 27.537 -5.958 1.00 0.00 N ATOM 2 CA GLY A 1 -2.199 28.399 -6.617 1.00 0.00 ... (3 Replies)
Discussion started by: tomasl
3 Replies

10. Shell Programming and Scripting

Split file into multiple files depending upon first 4 digits

Hi All, I have a file like below: 1016D"ddd","343","1299" 1016D"ddd","3564","1299" 1016D"ddd","3297","1393" 1016D"ddd","32989","1527" 1016D"ddd","346498","1652" 2312D"ddd","3269","1652" 2312D"ddd","328","1652" 2312D"ddd","2224","2100" 3444D"ddd","252","2100" 3444D"ddd","2619","2100"... (4 Replies)
Discussion started by: deepakgang
4 Replies
Login or Register to Ask a Question