Ich möchte eine Protokolldatei analysieren und für eine IP-Adresse grepping. Log-Datei wie folgt aussieht:Grep die letzte übereinstimmende Zeile einer Textdatei, die eine gegebene Zeichenfolge enthält, und startet nicht mit einer anderen Zeichenfolge
<date> -> <IP address>
zum Beispiel:
2016-06-02 11:46:33 +0200 -> 86.171.55.134
So würde Ich mag die letzte Zeile auszuwählen, die eine bestimmte IP enthält, und die Zeile beginnt nicht mit dem heutigen Datum (2016 -06-02), mein erster Versuch funktioniert leider nicht:
tac logfile.txt|grep -P '^(?<!2016-06-03).*?86.171.55.134'
auf diese Weise gelang es mir, damit es funktioniert, aber ich möchte eine allgemeinere Art und Weise arbeiten, wo ich verwenden kann, * oder. . *? anstelle von 19 Punkten, denn manchmal gibt es mehr und unbekannte Längendaten zwischen den beiden Muster:
tac logfile.txt|grep -aP -m1 '(?<!2016\-06\-03)...................86.171.55.134'
Hier 5000 aktuelle Zeile von Protokolldaten mit spielen:
http://www.filefactory.com/file/2sdj77aqflxp/5000.txt
nur die IP-Adressen wurden gefälscht.
versuchen, eine [mcve] bereitzustellen, weil dies zu wenig ist, um mit dem Spielen zu beginnen. – fedorqui