← Back to team overview

sslug-teknik team mailing list archive

Re: log

 

On Sat, Jan 13, 2007 at 13:43:41 +0100, Frank Vestergaard Pedersen wrote:
....
> Jeg burde måske have forklaret det lidt bedre!  nej det er ikke det 
> konkrete  time-stamp jeg er på udkig efter , men alle time-stamp i 
> logfilen +  X antal linjer  efter  hvert  time-stamp.
> 
> Jeg havde selv tænkt på noget i retningen af dette:
> 
> cat LOGFIL | grep "time-stamp format..." + X linjer....

Dvs. en regular expression til at matche flere tidsangivelser
eller en liste af tider?
Så det er stadig noget uklart.

grep/egrep du'r  ikke da du vil matche et antal efterfølgende linjer
ud fra krav om N linier og ikke noget i reg-expression match på tid.

Du skal nok se på awk eller perl  til den slags , og lige
definere hvordan du vil angive "time stamp" , og evt. flere af disse.

Dog listes ikke noget hvis dato/tid ikke  matcher i reg-expression).
Flere datoer kan klares med gruppering i regular expressions.
I linux kan du med "man 7 regex" og evt. "man gawk" læse
mere om  syntax med regular expressions.

BEGIN {
# kald eksempeler:
# awk -v n=6 -v t="Jan 13 12:09:01" -f listlog.awk  /var/log/syslog
# regular expression: 
# awk -v n=6 -v t="Jan 13 12:0[789]:.." -f listlog.awk  /var/log/syslog
# awk -v n=6 -v t='Jan 13 09:|Jan 13 11:|Jan 13 14:' ....
# awk -v n=6 -v t='Jan (13 09:|13 11:|13 14:)' ....
#
  lncnt=0;
  if (n<=0) n=8;
}

lncnt>0 { 
  print ; 
  lncnt--;
  next;
}

$0 ~ t { 
  lncnt=n;
  print ;
  next;
}

-- 
mvh Frank Damgaard  | 



Follow ups

References