Является ли `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/

  • Как получить символ в заданной позиции строки в сценарии оболочки?
  • Добавление содержимого в файл дает отказ в разрешении
  • Обработать файлы для создания нового файла
  • создание динамического случая
  • Преобразование json-объекта сопоставления в управляемую строку csv с использованием сценария bash
  • Можно ли как-то сказать, переносится ли ноутбук в сценарий bash или python?
  • Запуск сценария bash с php от cron
  • Как перебирать список файлов с отсортированными пробелами (без учета регистра)?
  • почему Bash не будет добавлять мои переменные вместе?
  • Убивание предыдущих экземпляров скрипта перед запуском того же сценария Unix
  • Как распознать состояние праздности в течение определенного периода в сценарии?
  • Linux и Unix - лучшая ОС в мире.