Este foi um bug em bsdgrep
, relacionado a uma variável que rastreia a parte da linha atual ainda a ser examinada, que é sobrescrita por chamadas sucessivas ao mecanismo de correspondência de expressões regulares quando vários padrões estão envolvidos.
correção local
Você pode contornar isso até certo ponto, não usando a opção -w
, que depende dessa variável para operação correta e, portanto, está falhando, mas usando extensões de expressão regular que correspondem ao início e ao final das palavras, tornando seu arquivo stopwords
se parece com:
\<i\> \<file\> \<types\>
Esta solução alternativa também exigirá que você não use a opção -F
.
Observe que os componentes de expressão regular documentados [[:<:]]
e [[:>:]]
que o manual re_format
informa sobre não funcionam aqui. Isso ocorre porque a biblioteca de expressões regulares que é compilada em bsdgrep
tem suporte de compatibilidade de expressão regular do GNU ativado. Este é outro bug, que é declaradamente corrigido.
correção de serviço
Este bug foi corrigido no início deste ano. A correção ainda não chegou aos sabores STABLE ou RELEASE do FreeBSD, mas está em CURRENT.
Para colocar isso na versão MacOS do grep
, que é derivado do bsdgrep
do FreeBSD, consulte a Apple. ☺
Leitura adicional
- Jonathan de Boyne Pollard (2017-10-15). O bsdgrep se comporta incorretamente quando recebe vários padrões . Bug # 223031. Bugzilla do FreeBSD.
- Kyle Evans (2017-04-03). bsdgrep: corrija o comportamento de correspondência . Revisão 316477. Fonte do FreeBSD.
- Kyle Evans (2017-05-02). bsdgrep: corrija -w -v correspondendo indevidamente a determinados padrões . Revisão 317665. Fonte do FreeBSD.
- Nathan Weeks (2014-06-16). grep (1) e bsdgrep (1) não reconhecem [[: & lt ;:]] e [[: & gt ;:]] . Bug # 191086. Bugzilla do FreeBSD.