Code:
awk 'BEGIN {split("OCTDP TCTDP GPRSTDP",TDPAr);
print "MSISDN,OCTDP,TCTDP,GPRSTDP,GCSO,MCSO,SSLO,GC2SO,MC2SO,TIF,GPRSSO,OSMSSO,GC3SO,MC3SO,GC4SO,MC4SO,MMSO,STAT"
}
NR==FNR {cnt = split ($0, cmpAr, ","); next}
/^MSISDN/ {getline; rec=$0}
/^TDPTYPE/ {noflds=0
while (1)
{getline; if ($0 ~ /^$/) break
OFS="|"; tmp=$1; $1=""; sub("\|",""); tmpAr[tmp]=$0; noflds=3 ;
}
for (i=1; i<=noflds; i++) rec=rec","tmpAr[TDPAr[i]]
}
/^(GCSO|GC3SO|MMSO)/ {
getline; OFS=","; $1=$1; rec=rec","$0}
/^NONE/ {getline; rec=rec ",no values"}
/END/ {split (rec, tmpAr, ","); rec=tmpAr[1]
for (i=2;i<=cnt;i++) {if (tmpAr[i] != cmpAr[i]) {tmpAr[i]=tmpAr[i]"_I"; dif=1} rec=rec","tmpAr[i]}
if (dif) rec=rec",different"
print rec; rec=""; delete tmpAr; dif=0}
' tobe file
MSISDN,OCTDP,TCTDP,GPRSTDP,GCSO,MCSO,SSLO,GC2SO,MC2SO,TIF,GPRSSO,OSMSSO,GC3SO,MC3SO,GC4SO,MC4SO,MMSO,STAT
20385503286,2|15|2038759581|0|2_I,18|15|2038759581|1|2|Y_I,_I,0,5,0,1,2,0,1,0,1,0_I,1,1_I,1_I,different
20386671719,2|15|2038759581|0|2|7,18|15|2038759594|1|2|Y,18|15|20387592403|0|3,0,5,0,1,2,0,1,0,1,2,1,2,0
20387323200,_I,18|15|2038759581|1|2|Y_I,18|15|20387592403|0|3,1_I,3_I,0,1,2,0,1,1_I,0_I,2,2_I,2,2_I,different
20385503289,no values_I,_I,_I,,_I,,_I,_I,,_I,,_I,_I,_I,_I,,different