¿Cómo utilizar expresiones regulares no codiciosas en grep?

¿Cómo utilizar expresiones regulares no codiciosas en grep?

EsteLa página dice que cualquier multiplicador en una expresión regular puede tener el sufijo '?' para hacer una búsqueda no codiciosa. Sin embargo, no puedo entender cómo hacer que funcione en grep.

grep -E '^.*?$' file

imprime todo el texto.

¿Cómo puedo hacer una búsqueda de expresiones regulares no codiciosa con grep?

Respuesta1

Necesita grepcompatibilidad con PCRE (Expresión regular compatible con Perl). por ejemplo, GNU greptiene esto: se puede aprovechar con la -Popción. También hay un programa independiente llamado pcregrepque se puede instalar en muchos sistemas con paquete normal.

Tenga en cuenta que -Ehabilita ERE (expresión regular extendida) que no tiene soporte de coincidencia no codiciosa con el ?token.

Entonces, con GNU greppuedes hacer, por ejemplo:

grep -Po '^.*?foo' file

para hacer coincidir (y extraer) hasta el primero foodesde el principio.

información relacionada