Jeg spekulerede på, om der er den bedste måde at køre følgende kommando på
cat cisco.log-20151103.log | grep -v "90.192.142.138" | grep -v "PIX" | grep -v "Intrusion"
Jeg prøvede
cat cisco.log-20151103.log | grep -v "90.192.142.138|PIX|Intrusion"
men det virker ikke.
Svar
to andre muligheder
grep -v -e 90.192.142.138 -e PIX -e Intrusion cisco.log-20151103.log
og forudsat faste strenge
grep -vF "90.192.142.138 PIX Intrusion " cisco.log-20151103.log
Svar
grep behøver ikke nødvendigvis input fra et rør, så du kunne gøre
grep -vE "90\.192\.142\.138|PIX|Intrusion" cisco.log-20151103.log
Capital E tænder for regulær ekspressionstilstand, og prikker skal undgås i dette tilfælde.
Kommentarer
Svar
grep -vE "90.192.142.138|PIX|Intrusion" cisco.log-20151103.log
Kommentarer
- Siden
.
matcher ethvert tegn, dette matcher f.eks90C192X142R138
og det er ikke det, OPen bad om. Du skal undslippe specielle (regex) tegn.
Svar
$ grep -v -f exclude.list $ cat exclude.list 90.192.142.138 PIX Intrusion
Kommentarer
- Dette fungerer fint, jeg ' er ikke sikker på, hvorfor nogen nedstemte det.
-E
tænder Udvidet regulært udtrykstilstand, som tillader alternering|
af mønstre.grep
uden -E har regelmæssige udtryk, og prikker er meningsfulde. Prikkerne burde have været undsluppet i questio n, men det ' er usandsynligt, at rækkefølgen af tal alligevel svarer til noget andet.grep -f
slår regulære udtryk fra.190.192.142.138
; så ideelt set skal IP-adressestykket forankres, hvis det er muligt, eller inkludere den afgrænsning, der er før IP-adressen i loggen, forudsat et komma ", " for at gøre tingene klare:grep -vE ',90\.192\.142\.138,|PIX|Intrusion' cisco.log-20151103.log