現在のところ、jsonデータを含むこのログファイルを解析するためのbashスクリプトを呼び出すpythonプログラムがありますが、各行には非jsonデータもあります。たとえば、すべての行が異なるJSONと、この形式になっています。Python/bashでJSONログファイルを解析する最善の方法は?
<123>1 2017-01-23T10:53:56.111-11:12 blaa blaa '{"jsondata": "1.0", "result": 1, "id": 1234}'
私の目標は、このメッセージが発生した回数をカウントすることで、おそらく回数は、別のメッセージは、この後の行で発生した、としてくださいそれは正しくフォーマットされています。
私は正しいフォーマットにフォーマットされた正規表現をグレープするbashスクリプトを使用しています。だから、問題は、JSONフィールドが順不同で来るかもしれないので、私の正規表現は機能しません。例えば、上記の行のように来ることがあります。
<123>1 2017-01-23T10:53:56.111-11:12 blaa blaa '{"jsondata": "1.0","id": 1234, "result": 1}'
私はまた、JSONデコーダとpythonでそれを行うことができますが、このログファイルは真のJSONファイルではないので、私はそれがうまくいくとは思いません。これを行う最も簡単で簡単な方法は何ですか?好ましくは、Pythonまたはいくつかのコマンドラインスクリプトを使用します。私はUbuntu 16.04です。
予想される入力は、上記と同じ行のログファイルです。私の予想される出力は、上記のようにフォーマットされた行の数、任意の順序での同じキー、異なる値、および特定のjsonメッセージが何回発生したかを調べることができるようにすることです(各行に異なるjsonメッセージがあります) )、たとえJSONキーが同じ順序でなくても。
は、あなたが何かを試してみましたか? – depperm
正規表現を使用して、文字列からJSONを抽出することができます。 例:r '(?P {。+?})' 正規表現はJSON部分にのみ一致する必要があります。 –
検証可能な入力と期待される出力を提供できますか?あなたの現在の情報は不明です。 – Inian