Avatar billede stimpy Nybegynder
19. november 2004 - 15:09 Der er 13 kommentarer

Brug af: grep med $

Hej

I forbindelse med filtrering af en log fil, bruger jeg følgende kommando:

grep domain.dk$ >> fil-domain.dk.log

Domain navnet domain.dk står altid til sidst i apache logfilen (noget jeg har sat den til så jeg kunne filtrerer på det).

Nu er jeg imidlertidigt løbet ind i et problem med at jeg også skal kunne filtrerer på andetdomain.dk, hvilket ikke er noget problem. Problemet ligger i at filtrerer på domain.dk, for ovenstående kommando vil også skrive linier for andetdomain.dk.


Samtidig skal samme grep kommando reagerer på både domain.dk, www.domain.dk, subdomain.domain.dk, etc. Samme gælder for de andre domainer, så jeg kan ikke regne med, at der altid er et mellemrum, et www. eller andet permanent forand.

Jeg håber nogle kan hjælpe med denne :-)

/Erik
Avatar billede skau Nybegynder
19. november 2004 - 15:12 #1
grep .domain.dk$ >>fil-domain.dk.log istedet
Avatar billede skau Nybegynder
19. november 2004 - 15:14 #2
så skal der stå et . før domain eks

benny.hansi.dk fanges
benny.2hansi.dk fanges ikke
Avatar billede skau Nybegynder
19. november 2004 - 15:17 #3
sorry
grep "\.domain.dk"$ >>fil-domain.dk.log

(fandt ud af at . skal escapes
Avatar billede stimpy Nybegynder
19. november 2004 - 15:19 #4
men de fanger ikke domain.dk (uden subdomain)!!
Avatar billede stimpy Nybegynder
19. november 2004 - 15:21 #5
Mon ikke bare jeg kan indsætte et ekstra "." i loggen i apache......det skal i hvert fald prøves.

Om der står .www.domain.dk kan være det samme
Avatar billede xyborx Nybegynder
19. november 2004 - 15:23 #6
Det må være noget i retning af..

grep '[[:space:]]\+\([[:alnum:]]\+\.\)\?\(domain\.dk\|andetdomain\.dk\)$'
Avatar billede skau Nybegynder
19. november 2004 - 15:48 #7
Jammen kan
grep "\.domain.dk"$ >>fil-domain.dk.log

ikke bare kigge i den log du har nu - eller har jeg misforstået spm
Avatar billede skau Nybegynder
19. november 2004 - 15:54 #8
er problemet ikke at du skal kigge efter to forskellige domains der ender på det samme men skal logges to forskellige steder men at subdomains skal i samme log fil - her 2 eksempler

benny.domain.dk og www.domain.dk  fanges af:
grep '\.domain.dk$' >> logfil1

www.nytdomain.dk og benny.nytdomain.dk fanges af:
grep '\.nytdomain.dk$' >> logfil2

Dermed kan du se at subdomains fanges, men selvom de ender på det samme i domainnavne kommer de ikke i samme logfil
Avatar billede skau Nybegynder
19. november 2004 - 16:15 #9
testfil tst indeholder:

bb.hansi.dk
.hansi.dk .bhansi.dk
bb.bhansi.dk

kommandoen grep '\.hansi.dk$' tst gir
bb.hansi.dk

konklusion $ (som jo siger at linien skal slutte med det pattern der står lige før også virker
Avatar billede stimpy Nybegynder
19. november 2004 - 23:47 #10
Skau: Problemet er at din kommando ikke fanger "hansi.dk", som også er en mulighed...

Xyborx: Jeg kan se ideen i den kommando du skriver, men kan ikke rigtig få den til at virke. Bassicly, grep skal kigge på om der enten er mellemrum eller punktum før domain navnet. Kan du komme med et eksempel?
Avatar billede skau Nybegynder
22. november 2004 - 07:00 #11
du kan da ikke have mellemrum før domainnavnet ????
Avatar billede skau Nybegynder
22. november 2004 - 07:01 #12
Undskyld - glemte at mellemrum sikkert er din sepeator i logfilen
Avatar billede stimpy Nybegynder
25. november 2004 - 11:20 #13
Det blev til noget så simpelt som: grep "\(\.\| \)domain.dk"$ access.log

xyborx: Kan du ikke lave et svar, så du kan dele point med skau.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester