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;
}