Antworten:
Das Standard-OS X grepunterstützt nur grundlegende und erweiterte reguläre Ausdrücke, wie in POSIX definiert und unter re_format(7)OS X erläutert. Diese Varianten unterstützen kein negatives Look-Behind.
Wenn Sie eine leistungsfähigere Syntax für reguläre Ausdrücke in Kombination mit der grepFähigkeit wünschen , ein Verzeichnis rekursiv nach einem Regex-Muster zu durchsuchen, sollten Sie die Verwendung in Betracht ziehen ack, die in Perl geschrieben ist und daher die Regex-Syntax unterstützt, einschließlich des negativen Rückblicks.
Das Äquivalent zu ackwäre:
ack '(?<!notthis)butthis'
Sie können installieren ackdurch:
brew install ackEs ist erwähnenswert, dass GNUgrep eine -POption zum Aktivieren der Perl-kompatiblen Regex-Syntax bietet, diese ist jedoch nicht in OS X enthalten. Sie können sie über Homebrew installieren, wenn Sie möchten brew install grep. Unter Linux ist es standardmäßig verfügbar.
Wenn Sie wie ich häufig zwischen Linux und OS X wechseln, würde ich empfehlen, GNU grepunter OS X standardmäßig oder ackals grepErsatz zu verwenden.
acküber Homebrew installierte Version kein Lookbehind mit variabler Länge unterstützt (zfind . | ack 'node_modules(?<!.*node_modules)'. B. ).