Como usar regex não ganancioso no grep?

Como usar regex não ganancioso no grep?

Essepágina diz que qualquer multiplicador em uma regex pode ter o sufixo '?' para fazer uma pesquisa não gananciosa. No entanto, não consigo descobrir como fazê-lo funcionar no grep.

grep -E '^.*?$' file

imprime o texto inteiro.

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

Responder1

Você precisa grepde suporte PCRE (Expressão regular compatível com Perl). por exemplo, o GNU greptem isso - pode ser aproveitado com a -Popção. Há também um programa independente chamado pcregrepque pode ser instalado em muitos sistemas com pacotes regulares.

Observe que -Ehabilita ERE (Extended Regular Expression) que não tem suporte de correspondência não gananciosa com o ?token.

Então, com o GNU grepvocê pode fazer, por exemplo:

grep -Po '^.*?foo' file

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

informação relacionada