Jeg lurte på om det er den beste måten å kjøre følgende kommando
cat cisco.log-20151103.log | grep -v "90.192.142.138" | grep -v "PIX" | grep -v "Intrusion"
Jeg prøvde
cat cisco.log-20151103.log | grep -v "90.192.142.138|PIX|Intrusion"
men det fungerer ikke.
Svar
to andre alternativer
grep -v -e 90.192.142.138 -e PIX -e Intrusion cisco.log-20151103.log
og forutsatt faste strenger
grep -vF "90.192.142.138 PIX Intrusion " cisco.log-20151103.log
Svar
grep trenger ikke nødvendigvis input fra et rør, så du kan gjøre det
grep -vE "90\.192\.142\.138|PIX|Intrusion" cisco.log-20151103.log
Stor bokstav E slår på modus for vanlig uttrykk, og prikker må unngås i dette tilfellet.
Kommentarer
Svar
grep -vE "90.192.142.138|PIX|Intrusion" cisco.log-20151103.log
Kommentarer
- Siden
.
samsvarer med et hvilket som helst tegn dette også samsvarer med f.eks90C192X142R138
og det var ikke det OP spurte om. Du bør unnslippe spesielle (regex) tegn.
Svar
$ grep -v -f exclude.list $ cat exclude.list 90.192.142.138 PIX Intrusion
Kommentarer
- Dette fungerer bra, jeg ' er ikke sikker på hvorfor noen nedstemte det.
-E
slår på Utvidet regulært uttrykk-modus, som tillater veksling|
av mønstre.grep
uten -E har regelmessige uttrykk og prikker er meningsfulle. Prikkene burde vært rømt i questio n, men det ' er usannsynlig at tallsekvensen uansett vil matche noe annet.grep -f
slår av regulære uttrykk.190.192.142.138
; så ideelt sett bør IP-adressestykket forankres hvis mulig, eller inkludere hvilken avgrensning som er før IP-adressen i loggen, antatt et komma ", " for å gjøre ting klare:grep -vE ',90\.192\.142\.138,|PIX|Intrusion' cisco.log-20151103.log