Rでaccess.logを解析したい.次の形式で、data.frameに入れたい:
TIME="2013-07-25T06:28:38+0200" MOBILE_AGENT="0" HTTP_REFERER="-" REQUEST_HOST="www.example.com" APP_ENV="envvar" APP_COUNTRY="US" APP_DEFAULT_LOCATION="New York" REMOTE_ADDR="11.222.33.444" SESSION_ID="rstg35tsdf56tdg3" REQUEST_URI="/get/me/something" HTTP_USER_AGENT="Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" REQUEST_METHOD="GET" REWRITTEN_REQUEST_URI="/index.php?url=/get/me/something" STATUS="200" RESPONSE_TIME="155,860ms" PEAK_MEMORY="18965" CPU="99,99"
ログはファイルごとに 400MB で、現在、約 4GB のログがあるため、サイズが重要です。
別のこと.. 2 つの異なるログ構造 (異なる列が含まれる) があるため、常に同じ列を持つとは想定できませんが、一度に解析されるのは 1 種類の構造のみであると想定できます。
私が今まで持っているのは、この構造の正規表現です:
(\\w+)[=][\"](.*?)[\"][ ]{0,1}
readlines
を使用しgsub
てデータを読み込んでデータフレームに収めることはできますが、read.table
遅くて面倒です。
何か案は?Tnx!