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
# 8  
Old 07-05-2011
There's also this sed method, which won't care whether OA 200909 is followed by a space or not:

Code:
$ echo "OA 200909C+0000000.5600000091.0000 OA 200909 P+0000000.5600000090.0000 PA 200909 C+0000000.5800000091.0000
" | sed 's/ \?\([OP]A\) \([0-9]*\) \?\([^ ]*\)/\1 \2 \3 20010125\n/g'
OA 200909 C+0000000.5600000091.0000 20010125
OA 200909 P+0000000.5600000090.0000 20010125
PA 200909 C+0000000.5800000091.0000 20010125

$


Last edited by Corona688; 07-05-2011 at 02:36 PM..
# 9  
Old 07-05-2011
You mean something like this ?
Code:
myfile=/abc/20010125/def/asdf.dat
fold -w 44 $myfile | awk -v f="$myfile" '{match(f,"[0-9]+");print $0 OFS substr(f,RSTART,RLENGTH)}'


Last edited by ctsgnb; 07-05-2011 at 03:38 PM..
# 10  
Old 07-05-2011
I need to do this for all the folders in 'abc'. the script needs go to all the sub folder of abc say <date> folder and to dir folder and pick up the file asdf. Split the long line by 44 char then add the <date> folder as a seperate column.
At last I need to add all the data from the different files into a single file.
The date folder is generic.. it changes but not the sub directories..
# 11  
Old 07-05-2011
Code:
find /abc -type f -name "*.dat" | while read f
do
p=$(echo $f | awk -F/ '{print $2}')
sed 's/ \(.+\)/\1/g' $f | fold -w 35 | sed "s/ *$/ $p/" >$f.output
done


Last edited by ctsgnb; 07-05-2011 at 04:50 PM..
# 12  
Old 07-05-2011
@ctsgnb:
I think you forgot a closing paren on line 3, and I think he wants '-w 44', not '-w 35', but other than that I think it should work.
This User Gave Thanks to Morgan Greywolf For This Post:
# 13  
Old 07-05-2011
Quote:
Originally Posted by Morgan Greywolf
@ctsgnb:
I think you forgot a closing paren on line 3, and I think he wants '-w 44', not '-w 35', but other than that I think it should work.
ooops , thx!
... fixed

Regarding the -w 35 or 44 or whatever, of course it must be adjusted depending on the input (i just based my formatting on the given sample)
This User Gave Thanks to ctsgnb For This Post:
# 14  
Old 07-05-2011
Thank you "ctsgnb" and "Morgan". the code is working with out the folder name..( if I remove /abc after find), but when i have the /abc it says directory does not exist.
This might be a silly question to U. can you please let me know why?
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