Arra gondoltam, hogy a következő parancs futtatására van-e a legjobb módszer

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

Próbáltam

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

, de nem működik.

Válasz

két másik lehetőség

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

és rögzített karakterláncok felvétele

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

Válasz

A grep nem feltétlenül igényel bemenetet egy csőből, ezért megteheti

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

Az E nagybetű bekapcsolja a reguláris kifejezés módját, és ebben az esetben a pontokat el kell kerülni.

Megjegyzések

  • Ennek meg kell lennie -E bekapcsolja az Extended szabályos kifejezés módot, amely lehetővé teszi a minták | váltakozását. grep -E nélkül szabályos kifejezések vannak és a pontok értelmesek. A questio-ban el kellett volna kerülni a pontokat n, de ' nem valószínű, hogy a számok sorrendje amúgy is megfelelne másnak. grep -f kikapcsolja a reguláris kifejezéseket.
  • A pontokat mindenképpen el kell kerülni; a megadott példa (az OP-ban és a válaszban) megegyezik a következővel: 190.192.142.138; ideális esetben az IP-címrészletet lehorgonyzandó, ha lehetséges, vagy az IP-cím elé be kell írnia bármilyen elválasztót a naplóba, vesszőt feltételezve ", " a dolgok egyértelművé tétele érdekében: grep -vE ',90\.192\.142\.138,|PIX|Intrusion' cisco.log-20151103.log

Válasz

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

Megjegyzések

  • Mivel a . bármely karakterrel megegyezik, ez pl 90C192X142R138 és az OP nem ezt kérte. Kerülnie kell a speciális (regex) karaktereket.

Válasz

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

Megjegyzések

  • Ez jól működik, nem tudom, hogy ' miért nem tudom, hogy valaki miért szavazta le.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük