Ik vroeg me af of er een beste manier is om de volgende opdracht uit te voeren

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

Ik heb het geprobeerd

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

maar het werkt niet.

Antwoord

twee andere opties

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

en uitgaande van vaste strings

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

Answer

grep heeft niet noodzakelijkerwijs invoer van een pipe nodig, dus je zou kunnen doen

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

Hoofdletter E schakelt de reguliere expressiemodus in en punten moeten in dit geval worden ontsnapt.

Opmerkingen

  • Dat zou -E moeten zijn, schakelt de Uitgebreide reguliere expressiemodus in, waarmee | van patronen kan worden afgewisseld. grep zonder -E heeft reguliere expressies en punten zijn betekenisvol. De punten hadden in de questio moeten zijn ontsnapt n, maar het ' is onwaarschijnlijk dat de reeks getallen hoe dan ook overeenkomt met iets anders. grep -f schakelt reguliere expressies uit.
  • De punten moeten in elk geval worden geëscaped; het gegeven voorbeeld (in OP en antwoord) zou overeenkomen met 190.192.142.138; dus idealiter zou het IP-adresgedeelte indien mogelijk verankerd moeten zijn, of een willekeurig scheidingsteken voor het IP-adres in het logboek moeten opnemen, aangenomen dat een komma ", " om dingen duidelijk te maken: grep -vE ',90\.192\.142\.138,|PIX|Intrusion' cisco.log-20151103.log

Antwoord

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

Reacties

  • Aangezien de . komt overeen met elk teken dat ook overeenkomt met bijv 90C192X142R138 en dat is niet wat het OP vroeg. U moet speciale (regex) tekens gebruiken.

Antwoord

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

Reacties

  • Dit werkt prima, ik ' weet niet zeker waarom iemand het downstemde.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *