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
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 asemenea90C192X142R138
ș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.
-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.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