Mietin, onko seuraava tapa suorittaa seuraava komento

cat cisco.log-20151103.log | grep -v "90.192.142.138" | grep -v "PIX" | grep -v "Intrusion" 

Yritin

cat cisco.log-20151103.log | grep -v "90.192.142.138|PIX|Intrusion" 

mutta se ei toimi.

Vastaa

kaksi muuta vaihtoehtoa

grep -v -e 90.192.142.138 -e PIX -e Intrusion cisco.log-20151103.log 

ja oletetaan kiinteät merkkijonot

grep -vF "90.192.142.138 PIX Intrusion " cisco.log-20151103.log 

Vastaus

grep ei välttämättä tarvitse syötettä putkesta, joten voit tehdä sen

grep -vE "90\.192\.142\.138|PIX|Intrusion" cisco.log-20151103.log 

Isolla E kytketään säännöllinen lauseketila päälle ja pisteet on vältettävä tässä tapauksessa.

Kommentit

  • Sen pitäisi olla -E ottaa käyttöön laajennetun säännöllisen lausekkeen tilan, joka sallii kuvioiden vuorottelun |. div id = ”3c51ea2e0c”>

ilman -E on säännöllisiä lausekkeita ja pisteet ovat merkityksellisiä. Pisteistä olisi pitänyt välttää questiossa n, mutta ' on epätodennäköistä, että numerosarja sopisi joka tapauksessa muuhun. grep -f poistaa säännölliset lausekkeet käytöstä.

  • Pisteistä tulee välttää joka tapauksessa; annettu esimerkki (OP: ssa ja vastauksessa) vastaa 190.192.142.138; joten ihannetapauksessa IP-osoitekappale tulisi ankkuroida, jos mahdollista, tai sisällyttää lokiin IP-osoitteen eteen mikä tahansa erotin, olettaen pilkun ", " selventää asioita: grep -vE ',90\.192\.142\.138,|PIX|Intrusion' cisco.log-20151103.log
  • vastaus

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

    Kommentit

    • Koska . vastaa mitä tahansa merkkiä, joka sopii myös esim 90C192X142R138 ja sitä OP ei pyytänyt. Sinun tulisi välttää erikoismerkkejä (regex).

    Vastaa

    $ grep -v -f exclude.list $ cat exclude.list 90.192.142.138 PIX Intrusion 

    Kommentit

    • Tämä toimii hyvin, en ' ole varma, miksi joku äänesti sitä.

    Vastaa

    Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *