我更喜欢(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 -P
或pcregrep
(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以及其他基于这些的发行版。我认为这不会给你带来任何问题。来源也可用: