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


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Split a single record to multiple records & add folder name to each line
# 1  
Old 07-05-2011
Data 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 there are subdirectories(the structure remains the same, I need to add the main directory name (example below) as a column in a fixed width file which is present in the subdirectory of that particular folder.. Can you please help me out in this as I am new to scripting.
Ex: /abc/<date>/def/asdf.dat
/abc/20010125/def/asdf.dat
/abc/20020502/def/asdf.dat

here I need to take the <date> dir name and put it in the asdf file after each row as a column.


Then conactenate all the data of the similar files into a single file.
Please help me out!

Regards,
Ram

Last edited by ram2581; 07-05-2011 at 02:27 PM.. Reason: changed the Title
# 2  
Old 07-05-2011
Show an example of the input you have and the output you want.
# 3  
Old 07-05-2011
File is /abc/20010125/def/asdf.dat
The file is
Input file data:
Code:
OA        200909C+0000000.5600000091.0000 OA        200909  P+0000000.5600000090.0000 PA        200909  C+0000000.5800000091.0000

Output file name : /abc/20010125/def/asdf_split
Output file data
Code:
OA        200909C+0000000.5600000091.0000 20010125
OA        200909P+0000000.5600000090.0000 20010125
PA        200909C+0000000.5800000091.0000 20010125

please let me know

Last edited by Franklin52; 07-06-2011 at 05:03 AM.. Reason: Please use code tags for code and data samples, thank you
# 4  
Old 07-05-2011
Where is this date coming from? Is it given to your program?

---------- Post updated at 11:11 AM ---------- Previous update was at 11:04 AM ----------

Code:
OA 200909C+0000000.5600000091.0000

Is there supposed to be a space between 200909 and C+?
# 5  
Old 07-05-2011
If you know that each of the records is exactly 44 characters, then you can just use the fold command (assuming you're using a POSIX compliant shell):

Code:
fold -w44 /abc/$(date +%Y%m%d)/def/asdf.dat | sed "s/$/ $(date +%Y%m%d)/" >/abc/$(date +%Y%m%d)/def/asdf_split

but that assumes that each of the records is always 44 characters and they never contain any embedded newlines, etc.

---------- Post updated at 01:16 PM ---------- Previous update was at 01:14 PM ----------

BTW -- that looks almost exactly like HPGL.

Last edited by Morgan Greywolf; 07-05-2011 at 03:23 PM.. Reason: thinko misplaced quote
# 6  
Old 07-05-2011
If there is, then this will work:

Code:
awk -v D=20010125 '{
         for(N=1; N<=NF; N++)
         if($N ~ /[OP]A/)
         {
                 print $N, $(N+1) $(N+2), D;
                 N++;
         }
 }' < datafile > datafile-out

name datafile and datafile-out whatever you please.

---------- Post updated at 11:17 AM ---------- Previous update was at 11:16 AM ----------

Quote:
Originally Posted by Morgan Greywolf
If you know that each of the records is exactly 44 characters, then you can just use the fold command (assuming you're using a POSIX compliant shell):
That will wrap the lines, but won't add the new string onto the end of them...

Last edited by Corona688; 07-05-2011 at 03:29 PM..
# 7  
Old 07-05-2011
Quote:
That will wrap the lines, but won't add the new string onto the end of them...
That's why the 'sed' command on the end.
Login or Register to Ask a Question

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

Split a large file in n records and skip a particular record

Hello All, I have a large file, more than 50,000 lines, and I want to split it in even 5000 records. Which I can do using sed '1d;$d;' <filename> | awk 'NR%5000==1{x="F"++i;}{print > x}'Now I need to add one more condition that is not to break the file at 5000th record if the 5000th record... (20 Replies)
Discussion started by: ibmtech
20 Replies

3. Shell Programming and Scripting

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 ... (5 Replies)
Discussion started by: traininfa
5 Replies

4. Shell Programming and Scripting

Split records into multiple records

Hi All, I am trying to split a record into multiple records based on a value. Input.txt "A",1,0,10 "B",2,0,10,15,20 "C",3,11,14,16,19,21,23 "D",1,0,5 My desired output is: "A",1,0,10 "B",2,0,10 "B",2,15,20 "C",3,11,14 "C",3,16,19 "C",3,21,23 (4 Replies)
Discussion started by: kmsekhar
4 Replies

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

6. Shell Programming and Scripting

Multiple lines in a single column to be merged as a single line for a record

Hi, I have a requirement with, No~Dt~Notes 1~2011/08/1~"aaa bbb ccc ddd eee fff ggg hhh" Single column alone got splitted into multiple lines. I require the output as No~Dt~Notes 1~2011/08/1~"aaa<>bbb<>ccc<>ddd<>eee<>fff<>ggg<>hhh" mean to say those new lines to be... (1 Reply)
Discussion started by: Bhuvaneswari
1 Replies

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

8. Shell Programming and Scripting

Single/Multiple Line with Special characters - Find & Replace in Unix Script

Hi, I am creating a script to do a find and replace single/multiple lines in a file with any number of lines. I have written a logic in a script that reads a reference file say "findrep" and populates two variables $FIND and $REPLACE print $FIND gives Hi How r $u Rahul() Note:... (0 Replies)
Discussion started by: r_sarnayak
0 Replies

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

10. Shell Programming and Scripting

Sort & Split records in a file

Hi, I am new to scripting. I need a script to sort and the records in a file and then split them into different files. For example, the file is: H1...................... H2...................... D2.................... D2.................... H1........................... (15 Replies)
Discussion started by: Sunitha_edi82
15 Replies
Login or Register to Ask a Question