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

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

man grep :

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

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

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

  • Как удалить последнюю запятую каждой строки csv с помощью linux
  • Скрипт пытается создать файлы, даже если им это не нужно?
  • переименуйте пакет файлов после чтения из исходного файла
  • Вывод в переменной не должен интерпретироваться как команда
  • Как удалить привилегии root в сценариях оболочки?
  • Генерация случайных чисел в Solaris?
  • Удаление шаблонов из строки с помощью bash
  • Копирование новейших файлов
  • 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

    Как просмотреть подключение к Интернету программы

    Пользовательская установка GCC – как мне установить переменные среды?

    Исполняемые файлы показывают с символом * рядом с их именем в выводе ls

    Как переименовать много файлов в каталоге без изменения их расширений?

    Невозможно выполнить команду внутри переменной bash, включая квадратные скобки с нулевым ключом

    Должен ли я выводить имя программы при возникновении предупреждения или ошибки?

    Можно ли сделать файл .tar.gz непосредственно из stdin? Или, мне нужно, чтобы смонтировать вместе уже gzipped файлы

    Linux без какого-либо распространения

    Проблема с установкой Gnome Debian

    Что делает опция -hint в команде поиска grub2?

    Получить пути ко всем SD-картам на компьютере, используя GNU bash 4.3.11, запуская Ubuntu 14.04

    Переключатель задач внутри VNC

    найти файл из папки с большим количеством подпапок

    Каков правильный способ читать stdin внутри назначения скобок 2-го канала

    Сортировка файлов с использованием сценария bash

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