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 grep
de suporte PCRE (Expressão regular compatível com Perl). por exemplo, o GNU grep
tem isso - pode ser aproveitado com a -P
opção. Há também um programa independente chamado pcregrep
que pode ser instalado em muitos sistemas com pacotes regulares.
Observe que -E
habilita ERE (Extended Regular Expression) que não tem suporte de correspondência não gananciosa com o ?
token.
Então, com o GNU grep
você pode fazer, por exemplo:
grep -Po '^.*?foo' file
para combinar (e extrair) até o primeiro foo
desde o início.