O padrão OS X grep
suporta apenas Expressões regulares básicas e estendidas conforme definido em POSIX e explicado em re_format(7)
para o OS X. Esses tipos não suportam look-behind negativo.
Se você quiser uma sintaxe de expressão regular mais poderosa, combinada com a capacidade de grep
s de pesquisar um diretório recursivamente para um padrão de expressão regular, considere usar ack
, que é escrito em Perl e, portanto, suporta sua sintaxe regex, incluindo look-behind negativo.
O equivalente com ack
seria:
ack '(?<!notthis)butthis'
Você pode instalar ack
por meio de:
-
Homebrew com
brew install ack
- O módulo no CPAN do Perl
- Download do único arquivo executável na página inicial
É importante notar que o GNU grep
tem uma opção -P
para ativar a sintaxe de regex compatível com Perl, no entanto ele não está incluído no OS X - você pode instalá-lo através do Homebrew se quiser com brew install grep
. No Linux, estará disponível por padrão.
Se você estiver alternando bastante entre o Linux e o OS X, por exemplo, recomendo usar o GNU grep
no OS X por padrão ou usar ack
como uma substituição grep
.