Como usar o regex não ganancioso no grep?

1

Esta página diz que qualquer multiplicador em um regex pode ser sufixado com '?' para fazer uma pesquisa não gananciosa. No entanto, não consigo descobrir como fazer isso funcionar no grep.

grep -E '^.*?$' file

imprime todo o texto.

Como posso fazer uma pesquisa regex não gananciosa com o grep?

    
por saga 28.05.2017 / 06:01

1 resposta

2

Você precisa de grep com suporte a PCRE (Perl Compatible Regular Expression). por exemplo. O% GNUgrep tem isso - pode ser aproveitado com a opção -P . Existe também um programa autônomo chamado pcregrep que pode ser instalado em muitos sistemas com empacotamento regular.

Observe que -E ativa o ERE (Expressão regular estendida) que não tem suporte a correspondência não-voraz com o token ? .

Portanto, com o GNU grep , você pode fazer, por exemplo:

grep -Po '^.*?foo' file

para combinar (e extrair) até o primeiro foo do início.

    
por 28.05.2017 / 06:06