/ 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
Hjælp til at bruge sed
Fra : Jonas Voss


Dato : 17-09-03 09:20

Hej, jeg prøver at gøre mig lidt klog på sed, men jeg ramler ind i
nogle problemer. Jeg prøver at parse en apache logfil for nogle
bestemte IP-adresser samt nogle bestemte filer, men ekskludere hvis en
bestemt UA har adspurgt en bestemt fil.. F.eks. IP xxx.xxx.xx.x
adspørger filen fil1.html, den vil jeg gerne fange. IP zxy.yzx.xxx.x
adspørger fil1.html, men er det en mac har jeg ikke lyst til at fange
den med sed.

Pt prøver jeg med følgende (på een linie):

sed -n '/PPC/!s/\(xxx.xxx.xx.x\|zxy.yzx.xxx.x\|fil1.html\)/&/p'
apachelog > resultat.txt

Det giver imidlertidig en tom resultat.txt-fil. Hvis jeg fjerner
regexp sætningen med paranteserne, altså
\(xxx.xxx.xx.x\|zxy.yzx.xxx.x\|fil1.html\), så får jeg fint alle hits
fra loggen, hvor UA-strengen *ikke* indeholder 'PPC'.

Jeg tror der er et eller andet helt grundlæggende jeg gør forkert med
min regexp syntax, men er der nogle der kan at udpege det for mig?

--
| Jonas @ 55.75, 12.42 | <http://verture.net/> |

   If it isn't broken, fix it till it is

 
 
Niels Tolstrup (18-09-2003)
Kommentar
Fra : Niels Tolstrup


Dato : 18-09-03 07:42

Jonas Voss wrote:

> Hej, jeg prøver at gøre mig lidt klog på sed, men jeg ramler ind i
> nogle problemer. Jeg prøver at parse en apache logfil for nogle
> bestemte IP-adresser samt nogle bestemte filer, men ekskludere hvis en
> bestemt UA har adspurgt en bestemt fil.. F.eks. IP xxx.xxx.xx.x
> adspørger filen fil1.html, den vil jeg gerne fange. IP zxy.yzx.xxx.x
> adspørger fil1.html, men er det en mac har jeg ikke lyst til at fange
> den med sed.
>
> Pt prøver jeg med følgende (på een linie):
>
> sed -n '/PPC/!s/\(xxx.xxx.xx.x\|zxy.yzx.xxx.x\|fil1.html\)/&/p'
> apachelog > resultat.txt
>
> Det giver imidlertidig en tom resultat.txt-fil. Hvis jeg fjerner
> regexp sætningen med paranteserne, altså
> \(xxx.xxx.xx.x\|zxy.yzx.xxx.x\|fil1.html\), så får jeg fint alle hits
> fra loggen, hvor UA-strengen *ikke* indeholder 'PPC'.
>
> Jeg tror der er et eller andet helt grundlæggende jeg gør forkert med
> min regexp syntax, men er der nogle der kan at udpege det for mig?
>
Hej Jonas,

Jeg prøvede komandoen under linux og solaris, den virker fint under linux
men ikke solaris. I solaris manpage for regexp SunOs 5.8 står intet om or,
derfor tror jeg at man er nød til at skrive noget i retning af:
sed -n -e '/PPC/!s/\(10.0.1.61\)/&/p' -e '/PPC/!s/\(10.0.0.26\)/&/p'
access_log
Det virker på min sun.

Venlig hilsen
Niels

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

Månedens bedste
Årets bedste
Sidste års bedste