Visit Our UNIX and Linux User Community


Multiple Records from 1 Record


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Multiple Records from 1 Record
# 1  
Old 09-25-2012
Multiple Records from 1 Record

I need to make one record to multiple records based on occurence column in the record and change the date.For example below first record has 5 ,so need to create 5 records from one and change the date to 5 months.Occurence can be any number.

I am unable to come with a script.Can some one help



Below is the input file

Code:
Id Name Date Occurence,Sal
1,ABC,Jan07,5,100
2,DEF,Dec06,14,600


Output File i Need is
Code:
Id,Name,Date,Occurence,Sal

1,ABC,Jan07,5,100/5
1,ABC,Feb07,5,100/5
1,ABC,Mar07,5,100/5
1,ABC,Apr07,5,100/5
1,ABC,May07,5,100/5
2,DEF,Dec06,14,600/14
2,DEF,Jan07,14,600/14
2,DEF,Feb07,14,600/14
2,DEF,Mar07,14,600/14
2,DEF,Apr07,14,600/14
2,DEF,May07,14,600/14
2,DEF,Jun07,14,600/14
2,DEF,Jul07,14,600/14
2,DEF,Aug07,14,600/14
2,DEF,sep07,14,600/14
2,DEF,Oct07,14,600/14
2,DEF,Nov07,14,600/14
2,DEF,Dec07,14,600/14
2,DEF,Jan08,14,600/14

Moderator's Comments:
Mod Comment Please use code tags next time for your code and data.

Last edited by radoulov; 09-25-2012 at 12:24 PM..
# 2  
Old 09-25-2012
try this..

Code:
awk -F, '{if(NR!=1){ P=$4;for(i=1;i<=P;i++){ print $0"/"P}}else{print}}' file


Last edited by pamu; 09-25-2012 at 12:10 PM.. Reason: correction..
# 3  
Old 09-25-2012
Like this?
Code:
awk -F, '{$0=$0"/"$4;for(i=1;i<=$4;i++) print}' file

I hope the headers are just to differentiate the fields and do not actually occur in the input.
# 4  
Old 09-25-2012
Thanks ,This is creating Multiple records,But i would need the date also to be changed.Date should increment by 1 month for every record
# 5  
Old 09-25-2012
Code:
awk -F, 'BEGIN{split("Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec",mname,",")
for(i=1;i<=12;i++) mnum[mname[i]]=i}
{mon=mnum[substr($3,1,3)];yr=substr($3,4,2);
$0=$0"/"$4;for(i=1;i<=$4;i++){
 $3=mname[mon++] sprintf("%02d",yr)
 if(mon==13) {yr++;mon=1}
 print
}}' OFS=, file

This User Gave Thanks to elixir_sinari For This Post:
# 6  
Old 09-25-2012
Thanks a lot ..Very helpful

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to split one record to multiple records?

Hi, I have one tab delimited file which is having multiple store_ids in first column seprated by pipe.I want to split the file on the basis of store_id(separating 1st record in to 2 records ). I tried some more options like below with using split,awk etc ,But not able to get proper output. can... (1 Reply)
Discussion started by: jaggy
1 Replies

2. Shell Programming and Scripting

Splitting record into multiple records by appending values from an input field (AWK)

Hello, For the input file, I am trying to split those records which have multiple values seperated by '|' in the last input field, into multiple records and each record corresponds to the common input fields + one of the value from the last field. I was trying with an example on this forum... (4 Replies)
Discussion started by: imtiaz99
4 Replies

3. UNIX for Dummies Questions & Answers

Split single record to multiple records

Hi Friends, source .... col1,col2,col3 a,b,1;2;3 here colom delimeter is comma(,). here we dont know what is the max length of col3 means now we have 1;2;3 next time i will receive 1;2;3;4;5;etc... required output .............. col1,col2,col3 a,b,1 a,b,2 a,b,3 please give me... (5 Replies)
Discussion started by: bab.galary
5 Replies

4. Shell Programming and Scripting

reformat one record from two records

I have not get much answer/solution for the posting. Here I break down the question and hope to get some help. 1. How can I use AWK to read in two records at the same time and keep loop to next two when the condition is meet? position 1-10 --> Unique to identity whether... (4 Replies)
Discussion started by: menglm
4 Replies

5. Shell Programming and Scripting

Split a single record to multiple records & add folder name to each line

Hi Gurus, I need to cut single record in the file(asdf) to multile records based on the number of bytes..(44 characters). So every record will have 44 characters. All the records should be in the same file..to each of these lines I need to add the folder(<date>) name. I have a dir. in which... (20 Replies)
Discussion started by: ram2581
20 Replies

6. Shell Programming and Scripting

Multiple records based on ';' in the record

Hi All, I have a *.csv files in a die /pro/lif/dow, (pipe delimiter file), these files are having 8 columns and 6 column(CDR_LOGIC) records are populated as below, I need to incorporate the below logic in all the *.csv files. 11||:ColumnA||:ColumnB 123||:ColumnA IIF(:ColumnA = :ColumnC then... (6 Replies)
Discussion started by: shruthidwh
6 Replies

7. Shell Programming and Scripting

Parsing record into multiple records in Shell Script

Hi, I am trying to parse a very long record in a text file into multiple records by checking ADD, DELETE, or MODIFY field value in a shell script. Input # File name xyz.txt ADD|N000|8015662|DELETE|N001|9915662|MODIFY|N999|85678 Output ADD|N000|8015662| DELETE|N001|9915662|... (8 Replies)
Discussion started by: naveed
8 Replies

8. Shell Programming and Scripting

converting all records of a file in to one record

I have a file temp.dat. The contents of this file is as follows abcdefgh abcdefgh abcdefgh abcdefgh abcdefgh abcdefgh The multiple records in this file needs to be converted in to a single record. abcdefgh abcdefgh abcdefgh abcdefgh abcdefgh abcdefgh (2 Replies)
Discussion started by: rsriramiyer
2 Replies

9. UNIX for Advanced & Expert Users

Parsing records from one record

Hi, I got a file which is one huge record. I know each record should be 550 bytes long. How do I parse out the records from the one huge record. (1 Reply)
Discussion started by: bwrynz1
1 Replies

10. UNIX for Dummies Questions & Answers

Parsing out records from one huge record

Hi, I have one huge record and know that each record in the file is 550 bytes long. How do I parse out individual records from the single huge record. Thanks, (4 Replies)
Discussion started by: bwrynz1
4 Replies

Featured Tech Videos