私はこのようなことをしようとしています:
grep -r '(?<!notthis)butthis' ./*
そして、いくつかを返すべきときに私は結果を得ていません。私は脱出を逃していますか?または、OSXは正規表現のルックアラウンドをサポートしていませんか?
デフォルトのOSX grep
は、 基本正規表現と拡張正規表現のみをサポートします POSIXで定義され、OSXの re_format(7)
で説明されています。これらのフレーバーはネガティブルックをサポートしていません。 -後ろに。
より強力な正規表現構文と、ディレクトリを再帰的に検索して正規表現パターンを検索するgrep
s機能が必要な場合は、Perlで記述された ack
の使用を検討する必要があります。ネガティブルックビハインドを含む、正規表現構文をサポートします。
ack
と同等のものは次のようになります。
ack '(?<!notthis)butthis'
ack
は次の方法でインストールできます。
brew install ack
GNU grep
には、Perl互換の正規表現構文を有効にするための-P
オプションがありますが、OS Xには含まれていません–できます。 Homebrew からインストールします。brew install grep
が必要な場合。Linuxでは、デフォルトで使用可能になります。
私のようにLinuxとOSXを頻繁に切り替える場合は、デフォルトでOSXでGNU grep
を使用するか、ack
grep
の代替品として。