Я пытаюсь сопоставить определенные значения в файле, используя плагин «хвост» для collectd. Этот плагин поддерживает только синтаксис POSIX ERE. Пример файла ниже:
capture.kernel_packets | Total | 25496291490
capture.kernel_drops | Total | 873229305
Попытка №1:
capture\.kernel_packets.*Total.*\|\s+(\d+)
Я хочу извлечь значение «25496291490» в первой группе захвата.
Попытка №2:
capture\.kernel_packets.*Total.*\|\s+(\d+)\1
Кажется, он захватывает только полное совпадение. Следующее работает, но не поддерживается POSIX ERE:
capture\.kernel_packets.*Total.*\|\s+\K\S+
https://collectd.org/documentation/manpages/collectd.conf.5.shtml#plugin_tail http://www.boost.org/doc/libs/1_44_0/libs/regex/doc/html/boost_regex/syntax/basic_extended.html
Что я упускаю из виду? Спасибо!
\1
из своего первого шаблона. - person ctwheels   schedule 04.01.2018collectd[11093]: utils_match: match_apply: callback failed
, предположительно потому, что ожидается число, а не вся строка. Согласно документации, первое подвыражение должно соответствовать чему-то, что может быть преобразовано в число с помощью strtoll(3) или strtod(3) - person Scuba_Steve   schedule 04.01.2018