Приветствую, уважаемый читатель!
Ещё один пост из новой рубрики Fast. Я думаю все мы часто используем оператор rex, чтобы что-то откуда-то достать и обычно SPL-запрос у меня им заканчивался (или table или stats или timechart), но оказалось, если он не последний, то есть нюанс. Поехали.
Задача:
Превратить это -
Вот в это (для дальнейшего построчного сравнения) -
Неправильное решение
source="/var/log/masscan/*"
| rex field=Port
"(?P<Port_Num>\d{1,5})\/(?P<Port_State>.{1,10})\/"
| sort Port_Num
| mvcombine Port_Num
| eval All_port=mvjoin(Port_Num,",")
| table IP,All_port
Имеем :(
Правильное решение
source="/var/log/masscan/*"
| rex field=Port
"(?P<Port_Num>\d{1,5})\/(?P<Port_State>.{1,10})\/"
| table IP,Port_Num
| sort Port_Num
| mvcombine Port_Num
| eval All_port=mvjoin(Port_Num,",")
| table IP,All_port
Имеем :)
Вместо длинного объяснения
Чтобы корректно использовать поименованные данные (Port_Num) извлеченные оператором rex необходимо в явном виде указать новое поле (Field) в операторе table. Такая же история, кстати, при объединении запросов через join.
Всем удачного использования!
Комментариев нет:
Отправить комментарий