各行の日付、時刻、システムイベントメッセージから始まるログファイルを解析しています。私は正規表現を使用して、strptimeや他の時間モジュールを使用して計算を行う必要なしに、必要な日付と時刻を簡単に一致させたいと考えています。私は9月12日の日付と特定の時間(9:23:45-09:23:50)すなわち5秒間のログを照合しようとしました。ログファイルは、この形式である:Pythonで正規表現を使用して特定の時刻と日付を一致させる方法
Sep 12 09:23:45 localhost systemd: Switching root.
Sep 12 09:23:45 localhost journal: Journal stopped
Sep 12 09:23:46 localhost journal: Runtime journal is using 8.0M (max allowed 91.1M, trying to leave 136.7M free of 903.7M available ? current limit 91.1M).
Sep 12 09:23:46 localhost journal: Runtime journal is using 8.0M (max allowed 91.1M, trying to leave 136.7M free of 903.7M available ? current limit 91.1M).
Sep 12 09:23:46 localhost systemd-journald[88]: Received SIGTERM from PID 1 (systemd).
私が試してみましたPythonコード:
import fileinput,re
for i in fileinput.input():
if (re.search(r'Sep 12 09:23:[45-50]',i)):
print(i)
をまた、私は大きなを解析しようとしていた場合、誰もがいただきました。この同じコードの影響を私に言うことができます100 GBを超えるファイルですか?メモリのオーバーヘッドを減らすためにこのコードを書き直すことはできますか?
:だからあなたのスクリプトは、少ないメモリとCPU使用 '[45-50]は' 45と50の間のすべての数値を意味するものではありませんがそれは4、または5と5の間の任意の数を意味し、一致する可能性のあるものは 'Sep 12 09:23:(45 | 46 | 47 | 48 | 49 | 50)'ですが、もっと巧妙な解決策が必要です。また、別の質問を別の質問として尋ねてください.2つではありません(また、大規模なファイルをPythonで解析することについてまだ何もない場合は前にチェックしてください)。 – zezollo
これも興味深いかもしれません:http://www.regular-expressions.info/numericranges.html – zezollo