私は(Perl/Python互換の正規表現)正規表現を好みます。
man grep
:
....ただし、システムでpcreが使用可能な場合にのみ機能します
これは最も一般的なLinuxディストリビューションでサポートされていますか?
私はfreebsd、solarix、busybox、...を気にしません.
[〜#〜] pcre [〜#〜] は、ほぼすべてのサーバーおよびdesktopLinuxシステムですが、軽量システムや組み込みシステム(電話、ルーター、TV、その他 IoT )では必ずしも期待できません。多くの場合、標準ユーザーランドの非常にトリミングされたバージョンがあります(基本的に、 busybox ベースのすべてのものはPCREがないことがほとんど保証されています)。
Debianには 人気コンテスト さまざまなパッケージのインストールメトリックを測定する機能があります。 grep
(25番目に一般的、176kインストール)はlibpcre3
(94番目に一般的、174kインストール)に依存します(notオプション) )。食い違いを説明することはできませんが、心配することもありません。
完全なLinuxディストリビューションを実行している最新のデスクトップおよびサーバーには、PCREサポートでコンパイルされたバージョンのgrep
があると想定しても問題ありません。
それでも、移植性のより良い保証を備えたPCREが必要な場合は、grep -P
またはpcregrep
(1kインストールで9363番目)またはack
(180インストールで21728番目)に依存しないでください。 Perl
(175kインストールで88番目)を直接使用します。
Perl -ne 'print if /regexp/'
「セキュリティ目的」のために意図的にPerl、python、phpを欠いているサーバーがあります。つまり、多くの不正なスクリプト( rootkits など)がこれらに依存しているため、実行できません。これは非常にまれです(強力な不正なPOSIXシェルスクリプトがたくさんあるので、ちょっとばかげています)。
注2:Perlは遅いです(pythonもそうです)。 LibPCREははるかに高速ですが、正規表現が単純であるほど、パフォーマンスが向上します。可能であれば、grep
のみ(BRE、基本正規表現)を使用するか、PCREランドを深く掘り下げるのではなく、grep -E
(ERE、拡張正規表現)を試してください。
私が覚えている限り、CentOS、Ubuntu、RedHat、Debian、およびこれらに基づく他のディストリビューションなど、多くのLinuxディストリビューションでpcre
を見てきました。何の問題もないと思います。ソースも利用可能です: