Split a record


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Split a record
# 1  
Old 05-08-2008
Split a record

UNIX Scripting
Hi I am trying to read a record and split it into multiple records
My Record looks like this

1001A0010@B0010*&^0)C0012hgdj&6sD0020fhfri93kivmepi9
where
UniqueID is 1001
segments are A,B,C,D
length of each segment is 4 characters after the segment 0010 for A
0010 for B 0012 for C etc

I have to split this file into
1001A0010@
B0010*&^0)
C0012hgdj&6s
D0020fhfri93kivmepi9

and Then I will be appending the Unique ID to the other segments like
1001A0010@
1001B0010*&^0)
1001C0012hgdj&6s
1001D0020fhfri93kivmepi9

Can anyone help me how to read a line and cut it and write it out
I wanna loop the line until end of line

Can anyone guide me how to do this

Thanks
Sreekanth
# 2  
Old 05-08-2008
This is one way to do it...
I'm sure someone will have a shorter code than this.

Code:
while read record
do
  uniq_id=`echo $record | awk -F'A' '{print $1}'`
  part1=`echo $record | awk -F'B' '{print $1}'`
  part2=`echo $record | awk -F'C' '{print $1}' | awk -F'B' '{print "B" $2}'`
  part3=`echo $record | awk -F'D' '{print $1}' | awk -F'C' '{print "C" $2}'`
  part4=`echo $record | awk -F'D' '{print "D" $2}'`
  echo $part1
  echo $uniq_id$part2
  echo $uniq_id$part3
  echo $uniq_id$part4
  echo "******************************************"
done < test1.txt

# 3  
Old 05-08-2008
In perl you could do something like

Code:
$str = "1001A0010@B0010*&^0)C0012hgdj&6sD0020fhfri93kivmepi9";

$str =~ /(.*)A(.*)B(.*)C(.*)D(.*)/;

$uni = $1;
$a = $2;
$b = $3;
$c = $4;
$d = $5;

$seg1 = $uni.A.$a;
$seg2 = $uni.B.$b;
$seg3 = $uni.C.$c;
$seg4 = $uni.D.$d;

and so on.
# 4  
Old 05-08-2008
No I cannot split the record based on the A. I have to look at the Segement A and then increase it by length then find next Segment (It can be any B,C,D,E,F) then split it until end of line

I have to loop the line until end of line and split the line based on length
The segments are variable ....
# 5  
Old 05-08-2008
Is this a school project ? Smilie

If the length of the Segment is fixed -> 4 characters, than why do you need to have the rest of the junk in the output
eg:

1001A0010@
B0010*&^0)
# 6  
Old 05-08-2008
Code:
echo "1001A0010@B0010*&^0)C0012hgdj&6sD0020fhfri93kivmepi9" |
awk '{
    Id=substr($0,1,4)
    n=split($0,m,/[A-Z]/)
    for(i=2;i<=n;++i) {
       if (cnt)
          cnt+=l+1
       else
          cnt=length(Id)+1
       printf("%s%s%s\n",Id,substr($0,cnt,1),m[i])
       l=length(m[i])
    }
}'

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Advanced & Expert Users

How to split large file with different record delimiter?

Hi, I have received a file which is 20 GB. We would like to split the file into 4 equal parts and process it to avoid memory issues. If the record delimiter is unix new line, I could use split command either with option l or b. The problem is that the line terminator is |##| How to use... (5 Replies)
Discussion started by: Ravi.K
5 Replies

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

3. Shell Programming and Scripting

Need to split record

Hi All, Need help in writing a shell script for the below requirement: i/p: 123456789 o/p: 123 456 789 Req: one record should be split into multiple based on the length ( after every third character it should be moved into next line) Thanks in Advance (14 Replies)
Discussion started by: HemaV
14 Replies

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

5. Shell Programming and Scripting

split content and write to new record

Hi, Help required to split record value and write to new row. Input a~b~c~value in ('3','4','5')~test output a~b~c~3~test a~b~c~4~test a~b~c~5~test input a~b~c~value in ('3','4')~test output a~b~c~3~test a~b~c~4~test (8 Replies)
Discussion started by: Jairaj
8 Replies

6. UNIX for Dummies Questions & Answers

split record without pattern

Hi , I have file with all records in one line, which needs to split it to have a fixed length.Am trying to execute the below script for the same FILENAME="$1" while line LINE do echo $LINE | awk 'BEGIN{n=1}{while(substr($0,n,10)){print substr($0,n,10);n+=10}}' done < $FILENAME it... (4 Replies)
Discussion started by: nishantrk
4 Replies

7. Shell Programming and Scripting

split record based on delimiter

Hi, My inputfile contains field separaer is ^. 12^inms^ 13^fakdks^ssk^s3 23^avsd^ 13^fakdks^ssk^a4 I wanted to print only 2 delimiter occurence i.e 12^inms^ 23^avsd^ (4 Replies)
Discussion started by: Jairaj
4 Replies

8. Shell Programming and Scripting

Record split.

I want to keep only records contain length is 10 other records should remove from my original file without redirecting to other output file. Source 1234567890 123456789011234 abcdefghil Expected Result 1234567890 abcdefghil (9 Replies)
Discussion started by: Jairaj
9 Replies

9. Shell Programming and Scripting

Split a record based on particular match

Hi , I have a requirement to split the record based on particular match using UNIX. Case1: Input Record : 10.44.48.63;"Personals/Dating;sports";1441 Output Records : 10.44.48.63;Personals/Dating;1441;Original 10.44.48.63;sports;1441;Dummy Case2: Input Record : ... (5 Replies)
Discussion started by: mksuneel
5 Replies

10. Shell Programming and Scripting

How to split a file record

-Hi, I have a problem with parcing/spliting a file record into two parts and assigning the split parts to two viriables. The record is as follows: ftrn facc ttrd feed xref fsdb fcp ruldb csdb omom fordr ftxn fodb fsdc texc oxox reng ttrn ttxn fqdb ... (5 Replies)
Discussion started by: aoussenko
5 Replies
Login or Register to Ask a Question