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

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

man grep :

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

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

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

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/

  • Извлечение URL из неформатированного текста
  • Убивание предыдущих экземпляров скрипта перед запуском того же сценария Unix
  • Как выполнить скрипт R, связав его с сценарием оболочки в Linux?
  • тайм-аут вызывает, когда цикл чтения заканчивается, когда `cat` отключен
  • Что означает status_of_proc по скобкам-скобкам?
  • Как установить переменные среды для программы, выполненной с помощью `nohup`?
  • Код выхода в конце скрипта bash
  • переменная pass в ssh
  • Каковы существенные различия между различными раковинами?
  • Как удалить все комментарии из файла?
  • Предотвращение сценария, изгоняющего системные ресурсы и сбой всей системы
  • Linux и Unix - лучшая ОС в мире.