Я хочу, чтобы разобрать access.log в R. Он имеет следующий вид, и я хочу, чтобы получить его в data.frame:разборе 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 на файл, и в настоящее время у меня около 4 ГБ журналов, поэтому размер имеет значение.
Другое дело. Существуют две разные структуры журналов (в них включены разные столбцы), поэтому вы не можете предполагать, что они имеют одинаковые столбцы, но вы можете предположить, что одновременно анализируется только один вид структуры.
То, что я до сих пор является регулярное выражение для этой структуры:
(\\w+)[=][\"](.*?)[\"][ ]{0,1}
Я могу прочитать данные и каким-то образом вписать его в dataframe с использованием readlines
, gsub
и read.table
, но это медленно и неаккуратно.
Любые идеи? Tnx!
В HTTP_USER_AGENT у вас есть пробелы, так что это не будет работать – Alan
@frinx Нет это не работает для меня. пробелы между кавычками, поэтому он не будет обнаружен 'read.table'. – agstudy
true .. tnx, позвольте мне попробовать – Alan