Problemas con funciones mejoradas en -regex de la utilidad "encontrar"

0

Por ejemplo, esto no encuentra el archivo:

: > 12; basename $(find -E . -regex '^(.*)(\d{2})' -print 2>/dev/null)

Pero esto hace:

basename $(find -E . -regex '^(.*)([0-9]{2})' -print 2>/dev/null)

Al mismo tiempo, por ejemplo:

echo -e '12\nabc\n456' | grep -E -e '^(\d{3})'

funciona bastante bien, aunque aparentemente usa el mismo regcomp() .

¿Qué estoy haciendo mal y cómo puedo solucionarlo?

    
pregunta cave-canem 29.09.2016 - 03:34

2 respuestas

0

ENHANCED FEATURES no está disponible en la implementación actual de find , ya que en la versión compilada de find REG_ENHANCED el indicador no se pasa (consulte regex(3 ) y enlace ).

    
respondido por el cave-canem 03.10.2016 - 05:43
1

Parece que hay un error en la búsqueda nativa de MacOS en la que su opción -regex no maneja correctamente ninguno de los accesos directos descritos en man re_format . El siguiente comando parece funcionar:

find -E . -regex '^(.*)([[:digit:]]{2})' -print

Esta variante un poco más simple también parece funcionar:

find -E . -regex '.*[[:digit:]]{2}' -print

En resumen, las opciones grep -E y find s -regex no parecen manejar las expresiones regulares exactamente de la misma manera.

    
respondido por el Eirik Fuller 29.09.2016 - 17:23

Lea otras preguntas en las etiquetas