У меня есть файл журнала, который я должен включить в QlikSense.QlikSense читает строку в строку файла журнала, поэтому мне нужно выражение для разбиения этой строки на нужные столбцы.
Файл журнала выглядит так (его размер составляет около 2,5 миллионов записей):
202.32.92.47 - - [01/Jun/1995:00:00:59 -0600] "GET /~scottp/publish.html" 200 271 - -
ix-or7-27.ix.netcom.com RFC-1413 - [01/Jun/1995:00:02:51 -0600] "GET /~ladd/ostriches.html" 200 205908 - "Mozilla/5.0 (X11; U; Linux i686; es-ES;rv:1.7.5)"
ppp-4.pbmo.net - John Thomas [07/Dec/1995:13:20:28 -0600] "GET /dcs/courses/cai/html/introduction_lesson/index.html HTTP/1.0" 500 - "http://www.wikipedia.org/" "Mozilla/5.0 (X11; U; Linux i686; es-ES;rv:1.7.5)"
ppp-4.pbmo.net - John Thomas [07/Dec/1995:13:20:37 -0600] "GET /dcs/courses/cai/html/index.html HTTP/1.0" 500 4528 - -
lbm2.niddk.nih.gov RFC-1413 John Thomas [07/Dec/1995:13:21:03 -0600] "GET /~ladd/vet_libraries.html" 200 11337 "http://www.wikipedia.org/" -
Структура каждой строки этого файла журнала: IP ID NAME DATETIME TIMEZONE METHOD DIR STATUS MB WEB FROM
.Итак, я разделю предыдущий пример журнала, используя ||
для лучшей визуализации:
|| ix-or7-27.ix.netcom.com || RFC-1413 || - || [01/Jun/1995:00:02:51 || -0600] "GET || /~ladd/ostriches.html" || 200 || 205908 || - || "Mozilla/5.0 (X11; U; Linux i686; es-ES;rv:1.7.5)" ||
|| ppp-4.pbmo.net || - || John Thomas || [07/Dec/1995:13:20:28 || -0600] || "GET || /dcs/courses/cai/html/introduction_lesson/index.html HTTP/1.0" || 500 || - || "http://www.wikipedia.org/" || "Mozilla/5.0 (X11; U; Linux i686; es-ES;rv:1.7.5)" ||
|| ppp-4.pbmo.net || - || John Thomas || [07/Dec/1995:13:20:37 || -0600] || "GET || /dcs/courses/cai/html/index.html HTTP/1.0" || 500 || 4528 || - || - ||
|| lbm2.niddk.nih.gov || RFC-1413 || John Thomas || [07/Dec/1995:13:21:03 || -0600] || "GET || /~ladd/vet_libraries.html" || 200 || 11337 || "http://www.wikipedia.org/" || - ||
Так, например, для первой строки:
IP = ix-or7-27.ix.netcom.com
ID = RFC-1413
NAME = -
DATETIME = 01/Jun/1995 00:02:51
TIMEZONE = -0600
METHOD = GET
DIR: /~ladd/ostriches.html
STATUS = 200
MB = 205908
WEB = -
FROM = Mozilla/5.0 (X11; U; Linux i686; es-ES;rv:1.7.5)
Итак, значение каждого поляможет быть text
или -
.Я пробовал много способов включить его, но я не добился этого.
Я попытался разбить каждую строку, используя разделитель пробелов, но это не работает, поскольку каждая строка может иметь разное количество пробелов.Также с использованием -
, ... Но я не получил его из-за переменной длины.
Я подумал, что, возможно, использование RegEx (шаблон) может решить мою проблему, но у меня естьЯ не знаю, как это сделать.
РЕДАКТИРОВАТЬ 1:
Если решение моей проблемы - это шаблон регулярных выражений, то нужно сделать следующее:
- Первый параметр: перехватить все до пробела
- Второй параметр: перехватывать все в пространство
- Третий параметр: перехватывать все до [
- Четвертый параметр: перехватывать все до пробела
- Пятый параметр:поймать все до]
- Шестой параметр: поймать все в пространство
- Седьмой параметр: поймать все в пространство
- Восьмой параметр: поймать все до пространства
- Девятый параметр: поймать все в пространство
- Десятый параметр: поймать все внутри "" или -
- Одиннадцатый параметр: поймать все внутри "" или -
Есть идеи, как я мог получить это?
Спасибо.