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

  • Det skal være -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.
  • Prikkene bør uansett slippes unna; eksemplet gitt (i OP og svar) ville matche 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

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.eks 90C192X142R138 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.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *