Решение в TXR . Файл data
содержит дословные данные из вопроса. format.txr
содержит следующее:
@(collect)
test/snmp/result/@date/@label/@{host}_@ipaddr
@port/udp open snmp
| snmp-brute:@(skip)
@ (collect :gap 0)
| @string - @val
@ (end)
|_ @endstring - @endval
@ (merge string string endstring)
@ (merge val val endval)
@(end)
@(output)
@ (repeat)
@date|@label|@host|@ipaddr|@(rep)@string - @val -- @(last)@string - @val@(end)
@ (end)
@(end)
Выполнить:
$ txr reformat.txr data
08-28-2016_12-30|AAAAA|hostname01|192.168.1.1|comstring1 - Valid credentials -- comstring2 - Valid credentials
08-28-2016_12-30|AAAAA|hostname02|192.168.1.2|comstring1 - Valid credentials -- comstring1 - Valid credentials
TXR хорош для извлечения текста, работающего над слабо структурированными данными, без дополнительных усилий и без дополнительных усилий, если структурные изменения или новые корпуса должны быть размещены и тому подобное.
Кодирование заданий по извлечению TXR обычно начинается с копирования и вставки фактических данных выборки и вывода в файл .txr
, а затем их обработки путем добавления переменных и директив захвата. Рабочий сценарий возникает из самих данных.
Структура данных все еще более или менее узнаваема в результирующем коде.