`grep -P`(Perl / Python正規表現)は、ほとんどのLinuxディストリビューションで移植可能です。

`grep -P`(Perl / Python正規表現)は、ほとんどのLinuxディストリビューションで移植可能です。

私は(Perl / Python互換正規表現)正規表現を好みます。

man grep:

....しかし、PCREがシステム上にある場合にのみ機能します。

最も一般的なLinuxディストリビューションはこの機能をサポートしていますか?

私はfreebsd、Solarix、busyboxに興味がありません...

答え1

ポリメラーゼ連鎖反応ほぼどこにでも設置仕える人そしてデスクトップLinuxシステムですが、軽量システムや組み込みシステム(携帯電話、ルーター、テレビ、その他のシステム)で必ず実行できるわけではありません。モノのインターネット)、通常は標準ユーザースペースが非常に単純化されたバージョンを持っているためです(デフォルトでは忙しい箱ベースにはほぼ確実にPCREが不足しています。

Debian には 1 つあります人気コンテスト各種パッケージの設置指標を測定する機能です。 grep(25番目の最も一般的な、176,000の設置)は、以下によって異なります。いいえオプション)libpcre3(94番目に最も一般的な、174,000回設置)。その違いを説明することはできませんが、心配しません。

完全なLinuxディストリビューションを実行している最新のデスクトップとサーバーには、PCREをサポートするコンパイル済みバージョンがあると仮定するのは安全ですgrep

ただし、PCREの移植性を高めるには(1kインストールのビット9363)またはgrep -P(180インストールのビット21728)に依存せず、(175kインストールのビット88)を使用してください。pcregrepackperl

perl -ne 'print if /regexp/'

一部のサーバーでは、「セキュリティの目的」に意図的にPerl、Python、PHPが不足しています。つまり、多くの悪意のあるスクリプト(例:ルートキット)はこれに依存しているので実行できません。このような状況は非常にまれです(強力な悪意のあるPOSIXシェルスクリプトが多いため、少し愚かです)。

注2:Perlは遅い(Pythonのように) LibPCREは高速ですが、正規表現が単純なほどパフォーマンスが向上します。可能であれば、PCRE領域を探索する代わりにgrep(BRE、基本正規表現)のみを使用するか、(ERE、拡張正規表現)を使用してみてください。grep -E

答え2

pcre私が覚えている限り、私はCentOS、Ubuntu、RedHat、Debian、そしてそれに基づく他のディストリビューションなどの多くのLinuxディストリビューションを見ました。私はこれがあなたに何か問題を引き起こすとは思わない。次のソースも利用できます。

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

関連情報