Hernan Marcelo Salvarezza wrote at Mon, 27 May 2002 16:30:38 +0200:
> Hello all i am parsing a cisco cdr log and i am having some problems to create the
>adecuate regexp
>
> the log goes like this
>
> May 16 08:03:58 10.0.0.1 38#00155544446, SetupTime 11:06:31.062 DisconnectTime
>11:10:06.922 May
> 16 08:03:58 10.0.0.1 38#00155544446,SetupTime 11:06:31.062 DisconnectTime
>11:10:06.922 May 17
> 08:03:58 10.0.0.1 38#00155544446, SetupTime 11:06:31.062 DisconnectTime
>11:10:06.922 May 17
> 08:03:58 10.0.0.1 38#00155544446,SetupTime 11:06:31.062 DisconnectTime
>11:10:06.922
>
>
> The script goes like this
>
> $VOIP = 'cat logprueba.log | egrep
> --regexp=%VOIPAAA-5-VOIP_CALL_HISTORY|cut -f6 -d " "';
>
> system('cat log1.log | egrep --regexp=PeerAddress| cut -f10 -d " "| sed -e s/38#//g >
> /var/log/parsed');
>
> $dialednumber='sed -e s/,//g /var/log/parsed';
>
>
> From this script i get the dialed number,setup time and disconnect time,now i have
>got to repeat
> this to analize the entire log,i was thinking in a foreach loop to look for a
>repetitive
> pattern(like %VOIPAAA-5-VOIP_CALL_HISTORY) and repeat the parsing for each ocurrence
>of the
> pattern.
>
you can sepeare number, setup and disconnection time with the regexp:
my ($number, $setup, $disconn) = $line =~
/(\d+\#\d+) # the number
(?:.*?) # some characters, but minimal ones
(\d\d:\d\d:\d:\d) # the setup time
(?:.*?) # again some characters
(\d\d:\d\d:\d:\d)/x; # the disconnection time
Note, that I uses (?: ...) to avoid capturing of the parts between.
Note also, that the number has to contain a # in it.
The times can be parsed with:
my ($hour, $min, $sec) = split ':', $timestr;
Hope I could help you,
Janek
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]