Множество рекс-выражений

Я использую выражения rex ниже для поиска следующих полей в моих необработанных данных:

Адресная строка 1 Адресная строка 2 Адресная строка 3 Адресная строка 4 и почтовый индекс

| rex "Address Line 1=(?<address1>[^,]*)"  | rex "Address Line 2=(?<address2>[^,]*)"  | rex "Address Line 3=(?<address3>[^,]*)"  | rex "Address Line 4=(?<address4>[^,]*)"  | rex "Postcode=(?<postcode>[^,]*)"  |

Как видно из выражения, каждому из этих полей затем назначается переменная, поэтому для адресной строки 1 переменная - это адрес1, адресная строка 2 - это "адрес2" и так далее.

Как вы также, несомненно, увидите, приведенное выше выражение содержит несколько выражений rex, может кто-нибудь, возможно, скажет мне, пожалуйста, есть ли способ объединить их в одно выражение rex.

2 ответа

Первый пример на странице https://docs.splunk.com/Documentation/Splunk/6.6.1/SearchReference/Rex показывает, как извлечь несколько полей с помощью одного rex команда. Если твой _raw многострочный, используйте \n или же \r по мере необходимости. http://docs.splunk.com/Documentation/Splunk/6.6.1/Knowledge/AboutSplunkregularexpressions

вы просто помещаете несколько групповых совпадений в свое регулярное выражение. Вот пример:

| rex field=_raw "\"SubjectId\":\"(?P<User>[^\"]*)\".*\"GrantType\":\"(?P<GrantType>\w*)\".*\"Category\":\"(?P<Category>\w+)\".*\"Name\":\"(?P<desc>[^\"]*)\".*\"TimeStamp\":\"(?P<TimeStamp>[^\"]*)\".*\"RemoteIpAddress\":\"(?P<IP>(?:[0-9]{1,3}\.){3}[0-9]{1,3})\"" |

конечно, для этого необходимо заранее знать порядок полей, что не требуется при объединении нескольких выражений 'rex' в вашем поиске.

Мне кажется, что для сложного примера проще сначала добавить несколько строк в regex101.app , например, для проверки выражения (я использую локально установленное приложение, но веб-сайт работает)

Другие вопросы по тегам