Mi chiedevo se esiste un modo migliore per eseguire il seguente comando

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

Ho provato

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

ma non funziona.

Risposta

altre due opzioni

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

e assumendo stringhe fisse

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

Risposta

grep non necessita necessariamente di input da una pipe, quindi potresti farlo

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

La E maiuscola attiva la modalità espressione regolare e in questo caso i punti devono essere preceduti da caratteri di escape.

Commenti

  • Dovrebbe essere -E che attiva la modalità di espressione regolare Estesa , che consente lalternanza | di pattern. grep senza -E contiene espressioni regolari e i punti hanno un significato. I punti avrebbero dovuto essere scappati nella questio n, ma ' è improbabile che la sequenza di numeri corrisponda comunque a qualsiasi altra cosa. grep -f disattiva le espressioni regolari.
  • I punti dovrebbero essere preceduti da caratteri di escape in ogni caso; lesempio fornito (in OP e risposta) corrisponderebbe a 190.192.142.138; quindi idealmente la parte dellindirizzo IP dovrebbe essere ancorata, se possibile, o includere qualsiasi delimitatore prima dellindirizzo IP nel registro, supponendo una virgola ", " per chiarire le cose: grep -vE ',90\.192\.142\.138,|PIX|Intrusion' cisco.log-20151103.log

Answer

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

Commenti

  • Poiché . corrisponde a qualsiasi carattere che corrisponda anche ad es 90C192X142R138 e questo non è ciò che lOP ha chiesto. Devi eseguire lescape dei caratteri speciali (regex).

Risposta

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

Commenti

  • Funziona benissimo, ' non sono sicuro del motivo per cui qualcuno lo ha votato in modo negativo.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *