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

Недавно у меня была возможность отметить, как реализована система инициализации в системе pecom, и это было увлекательно. Сценарий /etc/init.d/rc, содержащий уведомление об авторских правах Debian, был похож, но не идентичен текущей версии Debian. Сценарий rc запускает сценарии для соответствующего уровня запуска по символическим ссылкам S и K, но имеет оптимизацию, позволяющую не запускать сценарии K, у которых есть соответствующий сценарий S на том же уровне выполнения. В типичной системе Debian это не проблема, так как сценарии создания ссылок никогда не создают ссылки K и S для одного и того же сценария, но в системе pecom (явно не система Debian, использует rpm )есть K сценарий для всего в каждом каталоге rcX.d, и есть ссылки S для элементов, необходимых в новом уровне запуска, поэтому, если бы оптимизация Debian не была на месте, каждое изменение уровня запуска было бы просто ядром и несколькими перезагрузками. Такой набор ссылок приведет к идентичному поведению независимо от того, из какого каталога запускались K-скрипты.

0
23.06.2019, 01:10
1 ответ

Предполагая, что я правильно понял вашу потребность, если ваша команда match принимает форму pcregrep -o1 '(match)', соответствующее регулярное выражение, которое сообщит о совпадении, только если другая строка не соответствует, будет pcregrep -o1 '^(?!.*donotmatch).*(match)'. Поищите отрицательное опережающее выражение в документации PCRE. Также обратите внимание на .*перед (match); это необходимо из-за привязки отрицательного опережающего выражения к началу строки через^

0
28.01.2020, 03:32

Теги

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