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 :

10.44.48.63;"Personals/Dating;sports;zupiter";1441

Output Records :

10.44.48.63;Personals/Dating;1441;Original
10.44.48.63;sports;1441;Dummy
10.44.48.63;zupiter;1441;Dummy

Case3:
Input record :

10.44.48.63;"Personals/Dating";1441

Output record :

10.44.48.63;Personals/Dating;1441;Origonal

Can some one help me :slight_smile:

Regards,
MKS

Try...

 
awk -F\" '{k=split($2,arr,";")
for(i=1;i<=k;i++)
 if(i==1)
   print $1,arr,$NF";Original"
  else
   print $1,arr,$NF";Dummy"}' infile

Try:

perl -nle 's/"//g;/^([^;]+);(.*);([^;]+)$/;$,=";";$i=0;map {print $1,$_,$3,($i)?"Dummy":"Original";$i=1} split /;/,$2' file

Thanks a lot Malcom...

But in the O/P I am getting spaces like the below

10.44.48.63; Personals/Dating ;1441;Original
10.44.48.63; sports ;1441;Dummy

Many Thanks,
MKS

 
awk -F\" '{k=split($2,arr,";")
for(i=1;i<=k;i++)
 if(i==1)
   print $1,arr,$NF";Original"
  else
   print $1,arr,$NF";Dummy"}' OFS="" infile
awk -F";" '{gsub(/"/,"");print $1,$2,$NF,"Original";
                for (i=3;i<NF;i++) print $1,$i,$NF,"Dummy"
               }' OFS=";" infile