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

  • Det skal være -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.
  • Prikkerne skal under alle omstændigheder undslippes; det givne eksempel (i OP og svar) svarer til 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

Svar

grep -vE "90.192.142.138|PIX|Intrusion" cisco.log-20151103.log

Kommentarer

  • Siden . matcher ethvert tegn, dette matcher f.eks 90C192X142R138 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.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *