Могу ли я использовать Regexp захваченную строку в пути REGESLOG?

Похоже, что xrandr не очень хорошо справляется с работой с двумя мониторами в конфигурации - такой же, как , когда мониторы имеют разное разрешение. Если не возвращаться к наивысшему общему разрешению обоих мониторов (такое разрешение может быть неудовлетворительным или может даже не существовать), временным решением является использование параметра - масштаб . Если хотите. [монитор 1] с разрешением [resx1] x [resy1] и [монитор 2] с разрешением [resx2] x [resy2] , вы можете использовать, например,

xrandr --output [monitor 1] --mode [resx1] x [resy1] --output [monitor 2] --same-as [monitor 1] --scale `echo" [resx1] / [resx2] "| bc -l`x`echo "[resy1] / [resy2]" | bc -l`

где `echo" [res * 1] / [res * 2] "| bc -l` вычисляет желаемые отношения. Однако не гарантирует идеального качества; кроме того, имейте в виду, что качество установленных выше разрешений ограничено разрешением [монитор 1] .

1
26.09.2018, 20:06
1 ответ

Это можно сделать с помощью заменителя свойства . Поместите в свой rsyslog.confили аналогичную строку, определяющую шаблон, который является желаемым форматом имени файла, и используйте его в действии, когда вы соответствуете строке ввода. Например,

$template myfile,"/var/log/uid/%msg:R,ERE,1,FIELD:.*?uid=([0-9]+).*--end%"
if (re_match($msg, "uid=[0-9]+")) then {
 action(type="omfile" dynaFile="myfile")
 stop
}

Шаблон говорит, что переменная шаблона myfileпредставляет собой строку, включающую свойство msg, замененное регулярным выражением (R )совпадение, расширенное (ERE ), захват группы 1 (1 ), (и, если совпадений нет, сохранить исходное ПОЛЕ ). Фактическим регулярным выражением является часть .*?uid=([0-9]+).*. --endявляется обязательной частью последовательности %...:R,...--end%.

Следующие строки представляют собой обычный тест Rainer Script для строк, которые вы хотите сопоставить, и где разместить результат.

4
27.01.2020, 23:31

Теги

Похожие вопросы