Mă întrebam dacă există cel mai bun mod de a rula următoarea comandă

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

Am încercat

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

dar nu funcționează.

Răspuns

alte două opțiuni

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

și presupunând șiruri fixe

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

Răspuns

grep nu are neapărat nevoie de intrare dintr-o conductă, așa că ai putea face

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

Capital E activează modul de expresie regulată și punctele trebuie evitate în acest caz.

Comentarii

  • Acesta ar trebui să fie -E activează modul de expresie regulată Extended , care permite alternarea | a modelelor. grep fără -E are expresii regulate și punctele sunt semnificative. Punctele ar fi trebuit scăpate în questio n, dar ' este puțin probabil ca succesiunea numerelor să se potrivească oricum cu altceva. grep -f dezactivează expresiile regulate.
  • Punctele trebuie evitate în orice caz; exemplul dat (în OP și răspuns) s-ar potrivi cu 190.192.142.138; deci în mod ideal piesa de adresă IP ar trebui să fie ancorată dacă este posibil sau să includă orice delimitator înaintea adresei IP în jurnal, presupunând o virgulă ", " pentru a clarifica lucrurile: grep -vE ',90\.192\.142\.138,|PIX|Intrusion' cisco.log-20151103.log

Răspuns

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

Comentarii

  • De la . se potrivește cu orice personaj se potrivește, de asemenea 90C192X142R138 și nu asta a cerut OP. Ar trebui să scapi de caractere speciale (regex).

Răspuns

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

Comentarii

  • Acest lucru funcționează bine, ' nu sunt sigur de ce cineva a votat în jos.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *