Является ли `grep -P` (Perl / Python regex) переносимым для большинства дистрибутивов Linux

Я предпочитаю регулярные выражения (Perl / Python Compatible Regular Express).

man grep :

…., но работает только в том случае, если pcre доступен в системе

Поддерживается ли это в наиболее распространенных дистрибутивах Linux?

Я не забочусь о freebsd, solarix, busybox, …

  • Требуется один лайнер: остановите httpd, если он уже запущен, и запустите httpd, если он не запущен
  • Плагин мониторинга отправителя для Nagios
  • Как разобрать таблицу для шаблона, если шаблон содержит пробелы
  • bash для обновления аргументов командной строки в файле конфигурации Json
  • Как я могу вызвать запрос на кодовую фразу ssh key во время выполнения скрипта?
  • Избегайте «Совместное подключение к <host> закрытым» сообщениям
  • Как grep аргумент командной строки, на который был применен RegEx?
  • В скобках действительно помещается команда в подоболочку?
  • 2 Solutions collect form web for “Является ли `grep -P` (Perl / Python regex) переносимым для большинства дистрибутивов Linux”

    PCRE устанавливается практически на все серверные и настольные Linux-системы, но вы не можете ожидать этого на легких системах или встраиваемых системах (телефоны, маршрутизаторы, телевизоры и другие IoT ), поскольку они часто имеют очень обрезанные версии стандартного пользовательского пространства (в принципе, все, что связано с базой загрузок, гарантировано без PCRE).

    В Debian есть функция Popularity Contest, которая измеряет метрики установки для различных пакетов. grep (25-й наиболее распространенный, 176k устанавливает) зависит ( не опционально) от libpcre3 (94-й наиболее распространенный, 174k устанавливает). Я не могу объяснить это несоответствие, но я тоже не буду беспокоиться об этом.

    Следует с уверенностью предположить, что современные настольные системы и серверы, на которых запущены полные дистрибутивы Linux, будут иметь версии grep скомпилированные с поддержкой PCRE.

    Тем не менее, если вы хотите, чтобы PCRE с большей уверенностью переносимости, не полагайтесь на grep -P или pcregrep (9363th при установках 1k) или ack (21728-й при 180 установках), используйте perl (88-й при установках 175k) напрямую:

     perl -ne 'print if /regexp/' 

    Обратите внимание: есть серверы, умышленно отсутствующие perl, python и php для «целей безопасности», а именно, что многие скрипты-изгои (например, руткиты ) зависят от них и поэтому не могут работать. Это очень редко (и вроде глупо, так как есть много мощных скриптов оболочки POSIX).

    Примечание 2: Perl медленный (как и python). LibPCRE работает намного быстрее, но чем проще ваши регулярные выражения, тем лучше производительность. Если возможно, используйте только grep (BRE, базовые регулярные выражения) или еще раз используйте grep -E (ERE, расширенные регулярные выражения), а не погружайтесь глубже в землю PCRE.

    Насколько я помню, на этом я видел pcre на множестве дистрибутивов Linux, таких как CentOS, Ubuntu, RedHat, Debian и другие дистрибутивы. и я думаю, что это не вызовет у вас никаких проблем. также доступен источник:

    http://sourceforge.net/projects/pcre/files/pcre/

    Interesting Posts

    bash: как сохранить состояние при быстрой оценке

    Ключ с модификаторами для вызова определенного поведения в xmodmap

    Как выполнить udhcpc как не root

    Как я могу сделать звуковой сигнал через динамики (spdif)?

    openbox – Как переключить пользователя без выхода из системы?

    Эволюция-EWS (Exchange) Адресная книга не синхронизирует

    Есть ли причина, чтобы shebang указывал на / bin / sh, а не / bin / bash?

    Можно ли использовать параллельный порт в качестве устройства ввода CUPS?

    Есть ли способ запросить пакет OpenBSD по описанию?

    Проблема при запуске скрипта на хосте после подключения

    Как создать моментальный снимок только для чтения в LVM, а затем откат к нему после некоторой работы?

    Преимущества использования терминальных мультиплексоров linux

    Что делает дистрибутив Linux «Enterprise»?

    Как разделить одно подключение к Интернету из локальной сети в другую?

    Почему следующий скрипт удаляет себя?

    Linux и Unix - лучшая ОС в мире.