web-dev-qa-db-ja.com

OSX grepではネガティブルックビハインドがサポートされていますか?

私はこのようなことをしようとしています:

grep -r '(?<!notthis)butthis' ./*

そして、いくつかを返すべきときに私は結果を得ていません。私は脱出を逃していますか?または、OSXは正規表現のルックアラウンドをサポートしていませんか?

8
Mafuba

デフォルトのOSX grepは、 基本正規表現と拡張正規表現のみをサポートします POSIXで定義され、OSXの re_format(7) で説明されています。これらのフレーバーはネガティブルックをサポートしていません。 -後ろに。

より強力な正規表現構文と、ディレクトリを再帰的に検索して正規表現パターンを検索するgreps機能が必要な場合は、Perlで記述された ack の使用を検討する必要があります。ネガティブルックビハインドを含む、正規表現構文をサポートします。

ackと同等のものは次のようになります。

ack '(?<!notthis)butthis'

ackは次の方法でインストールできます。


GNU grep には、Perl互換の正規表現構文を有効にするための-Pオプションがありますが、OS Xには含まれていません–できます。 Homebrew からインストールします。brew install grepが必要な場合。Linuxでは、デフォルトで使用可能になります。

私のようにLinuxとOSXを頻繁に切り替える場合は、デフォルトでOSXでGNU grepを使用するか、ackgrepの代替品として。

15
slhck