Derzeit habe ich ein Python-Programm, das ein Bash-Skript aufruft, um diese Protokolldatei, die JSON-Daten enthält, zu analysieren, aber jede Zeile enthält auch Nicht-JSON-Daten. Zum Beispiel hat jede Zeile dieses Format mit einem anderen JSON:Beste Methode zum JSON-Log-Datei mit Python/Bash zu analysieren?
<123>1 2017-01-23T10:53:56.111-11:12 blaa blaa '{"jsondata": "1.0", "result": 1, "id": 1234}'
Mein Ziel ist es zu zählen, kam die Anzahl der Male diese Meldung aufgetreten ist, möglicherweise die Anzahl der Male eine andere Nachricht in der Zeile nach diesem, und stellen Sie sicher, Es ist korrekt formatiert.
Ich habe ein Bash-Skript verwendet, grepping reguläre Ausdrücke, die im richtigen Format formatiert sind. Das Problem besteht also darin, dass JSON-Felder nicht in der richtigen Reihenfolge angezeigt werden. Daher funktioniert meine Regex nicht. Zum Beispiel kann die obige Zeile kommen kann:
<123>1 2017-01-23T10:53:56.111-11:12 blaa blaa '{"jsondata": "1.0","id": 1234, "result": 1}'
kann ich es auch in Python mit json Decodern aber da diese Protokolldatei nicht um eine echte JSON-Datei ist, glaube ich nicht, dass das funktionieren würde. Was ist der beste, aber einfachste Weg, dies zu tun? Am besten mit Python oder einem Kommandozeilenskript. Ich bin in Ubuntu 16.04.
Meine erwartete Eingabe ist eine Protokolldatei mit Zeilen, die die gleichen wie oben sind. Meine erwartete Ausgabe ist in der Lage zu überprüfen, wie viele Zeilen wie oben formatiert sind, mit den gleichen Schlüsseln in beliebiger Reihenfolge und verschiedenen Werten, sowie zu prüfen, wie oft diese spezifische json-Nachricht aufgetreten ist (es gibt verschiedene json-Nachrichten in jeder Zeile)), auch wenn die JSON-Schlüssel nicht in der gleichen Reihenfolge sind.
haben Sie alles versucht? – depperm
Sie können eine Regex verwenden, um den JSON aus der Zeichenfolge zu extrahieren. Beispiel: r '(? P {. +?})' Diese Regex sollte nur mit dem JSON-Teil übereinstimmen. –
Können Sie eine überprüfbare Eingabe und eine erwartete Ausgabe geben. Ihre aktuellen Informationen sind unklar. – Inian