← Back to team overview

sslug-teknik team mailing list archive

Re: log

 

Frank Damgaard wrote:
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;
}


Jeg havde egentligt regnet med at jeg nok skulle ud i noget regular expression med en :

grep -A x 2007 LOGFIL

vil nok kunne gøre det da 2007 i alle de time-stamp jeg skal lede efter. Ellers er der vel ikke andet at gøre end at tage sig sammen og få lært awk eller noget ander der kan regular expression.

Men jeg takker for nu

mvh
Frank


Follow ups

References