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
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
rdcwayx
6
awk -F";" '{gsub(/"/,"");print $1,$2,$NF,"Original";
for (i=3;i<NF;i++) print $1,$i,$NF,"Dummy"
}' OFS=";" infile