Hi PHV,
The Script is as follows
cat MM_Cor_match.txt |awk '
function Time_S(ut ,cmd,buf,a){
cmd="echo '0d"ut"=Y'|adb|sed -e 's/://g'"
cmd|getline buf;close(cmd);split(buf,a," ")
a[2]=(index("JanFebMarAprMayJunJulAugSepOctNovDec",a[2])+2)/3
return sprintf("%04d%02d%02d%06d",a[1],a[2],a[3],a[4])
}{if($0~/^<AT/){getline;next;getline;next;getline;next;}}/^S7 A/{printf "\n%s %s",sep,$0;sep="\n";next}
{printf " %s ",$0}' |cut -b1-490,500-550,680-800 | awk '{
for (e=1;e<=NF;e++)
{
if (match($e,".[d][v,s,f][0,2][1,9,3].")
)
{
if($82!="V"){st=$85}{if($82=="V"){st=""}{if($154=="M"){T_S=$155}{if($155=="M"){T_S=$156}
{
printf "%s %15.f %15s %5s %8s %18s %s %s %s %10s %5s\n",$25,Time_S
(T_S),$58,$68,$70,$61,$82,$75,st,$79,$e;next
}
}
}
}
}else {
if($e~/.ss09/){if(match($37,"BlockCall|LRS")){{da=$60}{bnum=$63}{du=$73}{pci=$78}{id=$82}}else{{bnum=$62}{da=$59
}{du=$72}{pci=$77}{id=$81}{st=$84}}{printf "%s %15s %10s%10s %5s %s %10s %s\n",$25,da,bnum,du,st,pci,id,$e;next
}}}}}'
A sample of one record after running the above.
(These field differ to each any every record)
<AT 1.1 LV 1.1 NT 3.4.0.0 >Q 3 CDR b J 101 C
S7 A 1 O D 1 D 0 D 0 D 0 D 0 D 0 D 0 D 0 D 128 A 10 0113161181 A 10 011316EEEE D 0 D 0 D 0 A 0 M 1073830528 0 D 2004 D 1 D 11 D 16 D 15 D 28 D 0 D 1 A 14 20040111161528 A 10 0860007249 A 10 086000EEEE A 0 D 18 D 7201 D -1 A 1 B D 1 K 0 A 1 R A 1 M A 1 a A 1 A 1 A 1 A 1 A 0 D -1 D -1 A 2 31 D -1 D -1 D -1 A 0 A 0 A 0 G 0 C SS A 0 A 0 D -1 D -1 D -1 D -1 D -1 D -1 A 0 A 0 A 16 0001755420040111 D 113354 D 2 D 17554 A 4 df23 A 7
read:02 M 1073823327 0 D 2004 D 1 D 11 D 14 D 15 D 27 D 0 D 1 C S A 16 075993650749177E C S4 C S0 A 0 D 0 D 0 D 0 D 0 D 0 D 0 D 0 D 0 D 0 D 0 D 0 D 0 D 0 D 0 D 0 A 44 read:02.df23.0000115.00017554.20040111204003 1 R 3 CDR b
J 101 g A 25 Record_version_SSP_IAC_ST W C g A 19 Record_type_SSP_IAC W A g A 13 Info_flag_ANS W D g A 14 Info_fl ag_ADDA W D g A 14 Info_flag_ADDD W D g A 14 Info_flag_ADDI W D g A 14 Info_flag_ADDU W D g A 18 Info_flag_Reserv ed W D g A 13 info_flag_DDO W D g A 14 Info_flag_ISDN W D g A 9 Info_flag W D g A 16 A_number_CLI_SSP W A g A
23 A_number_CLI_SSP_masked W A g A 19 Billed_party_coding W D g A 21 Billed_party_type_SSP W D g A 24 Billed_party_coding_type W D g A 19 Billed_party_id_SSP W A g A 15 Disconnect_date W M g A 22 Disconnect_Date_Time_Y W D g A 22 Disconnect_Date_Time_M W D g A 22 Disconnect_Date_Time_D W D g A 22 Disconnect_Date_Time_H W D g A 24 Disconnect_Dat
e_Time_MIN W D g A 24 Disconnect_Date_Time_SEC W D g A 27 Disconnect_Date_Time_MILSEC W D g A 24 Disconnect_Date_Time _DOW W D g A 20 Disconnect_date_time W A g A 18 Dialled_digits_SSP W A g A 25 Dialled_digits_SSP_masked W A g A 2
3 Translated_B_number_SSP W A g A 17 Call_charge_units W D g A 13 Call_duration W D g A 29 Duration_before_answer_IAC
_ST W D g A 23 Partial_call_indication W A g A 17 Record_seq_number W D g A 28 Connection_id_number_SSP_IAC W K g
A 11 Status_code W A g A 17 Error_indication1 W A g A 17 Error_indication2 W A g A 17 Error_indication3 W A g A 17 Error_indication4 W A g A 17 Error_indication5 W A g A 17 Error_indication6 W A g A 16 Error_indication W A g A 16 Calculated_units W D g A 19 Calculated_duration W D g A 17 Bearer_capability W A g A 14 IN_service_SSP W D g
The reason for "cut -b1-490,500-550,680-800" due to the fact that awk complains awk: Input line S7 A 1 O D 1 D 0 cannot be longer than 3,000 bytes and for "{if($0~/^<AT/){getline;next;getline;next;getline;next;}, this line is not required.
I have tried to simplify my explanation and hope that this is Comprehencable.
If you have a better solution, I am eager to learn.
Many Thanks
Chris