`grep -P`(Perl/Python 正则表达式)在大多数 Linux 发行版上是可移植的

`grep -P`(Perl/Python 正则表达式)在大多数 Linux 发行版上是可移植的

我更喜欢(Perl/Python Compatible Regular Expressions)正则表达式。

man grep:

....,但仅当系统中存在 PCRE 时才有效

最常见的 Linux 发行版是否支持此功能?

我不关心 freebsd、solalix、busybox...

答案1

聚合酶链式反应几乎安装在所有服务器桌面Linux 系统,但你不一定能在轻量级系统或嵌入式系统(手机、路由器、电视和其他物联网),因为他们通常有标准用户空间的非常精简的版本(基本上,任何带有忙碌盒基地几乎肯定缺乏PCRE)。

Debian 有一个人气大赛测量各种包的安装指标的功能。 grep(第 25 位最常见,176k 安装)取决于 (不是可选)libpcre3(第 94 位最常见,174k 安装)。我无法解释这种差异,但我也不担心。

可以安全地假设运行完整 Linux 发行版的现代桌面和服务器将具有grep支持 PCRE 的编译版本。

不过,如果您希望 PCRE 具有更好的可移植性,请不要依赖grep -Ppcregrep(1k 安装时第 9363 位)或ack(180 安装时第 21728 位),perl直接使用(175k 安装时第 88 位):

perl -ne 'print if /regexp/'

请注意,有些服务器出于“安全目的”故意缺少 perl、python 和 php,即许多流氓脚本(例如rootkit)依赖于这些,因此无法运行。这种情况非常罕见(而且有点愚蠢,因为有很多强大的流氓 POSIX shell 脚本)。

注 2:Perl 很慢(Python 也是如此)。 LibPCRE 速度更快,但正则表达式越简单,性能就越好。如果可能,请grep单独使用(BRE,基本正则表达式)或尝试grep -E(ERE,扩展正则表达式),而不是深入研究 PCRE 领域。

答案2

据我记得,我见过pcre很多Linux发行版,比如CentOS、Ubuntu、RedHat、Debian以及其他基于这些的发行版。我认为这不会给你带来任何问题。来源也可用:

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

相关内容