/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
Log-fil tricks
Fra : Thomas Lindgaard


Dato : 15-06-06 12:33

Hejsa

Jeg har en logfil, hvor formatet er noget i stil med følgende:

Jun 15 13:22:05 blablabla

Med andre ord: Hver linie starter med en tidsangivelse (3 bogstaver til
måned, to pladser til dato (altså " 1" hvis dato kun består af en enkelt
ciffer) og et klokkeslet.

Nu ønsker jeg at kopiere alt fra et givent tidspunkt og frem over i en
anden (mindre) fil. Kan man med snedige tricks med grep, head, tail,
whatever finde frem til den første linie i logfilen, hvor det pågældende
tidspunkt er overskredet, og så kopiere denne linie + alle de resterende
over i en anden fil.

Det indlysende:

grep "Jun 15" logfile > ny_logfil

kan _næsten_ klare opgaven... man kan ikke angive et klokkeslet, og hvis
man vil have data fra den sidste uge, skal man køre 7 grep'er med
forskellig søgestreng og cat'e resultaterne sammen.

Er der nogle smarte tricks? Eller skal jeg til at kode mig ud af det?

--
Mvh.
/Thomas

 
 
Peter Makholm (15-06-2006)
Kommentar
Fra : Peter Makholm


Dato : 15-06-06 12:42

Thomas Lindgaard <thomas@it-snedkeren.dk> writes:

> grep "Jun 15" logfile > ny_logfil
>
> kan _næsten_ klare opgaven... man kan ikke angive et klokkeslet, og
> hvis man vil have data fra den sidste uge, skal man køre 7 grep'er med
> forskellig søgestreng og cat'e resultaterne sammen.
>
> Er der nogle smarte tricks? Eller skal jeg til at kode mig ud af det?

perl er smart:

perl -ne 'print if /^Jun 14/..0' logfil > ny_logfil

expr1 .. expr2 er en logisk operator der er sand fra expr1 er sand
indtil expr2 er sand.

--
Peter Makholm | Ladies and gentlemen, take my advice, pull down your
peter@makholm.net | pants and slide on the ice
http://hacking.dk | -- Sidney Freedman

Klaus Alexander Seis~ (15-06-2006)
Kommentar
Fra : Klaus Alexander Seis~


Dato : 15-06-06 14:43

Peter Makholm skrev:

> perl er smart:
>
> perl -ne 'print if /^Jun 14/..0' logfil > ny_logfil

Noget tilsvarende med awk, fx:

#v+

   awk '/^Jun 15 07:14/,/^Jun 15 07:15/ { print }'

#v-

hvor altså fra-til adskilles af et komma.

Mvh,

--
Klaus Alexander Seistrup
SubZeroNet, Copenhagen, Denmark
http://magnetic-ink.dk/

Thomas Lindgaard (15-06-2006)
Kommentar
Fra : Thomas Lindgaard


Dato : 15-06-06 20:48

Peter Makholm wrote:
> perl er smart:
>
> perl -ne 'print if /^Jun 14/..0' logfil > ny_logfil
>
> expr1 .. expr2 er en logisk operator der er sand fra expr1 er sand
> indtil expr2 er sand.

Jup - Perl er <bandeord> smart :)

.... men jeg er ikke kommet så langt med det endnu - begyndte først i
mandags :)

Takker.

--
Mvh.
/Thomas


Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408926
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste