¿Por qué este resultado de BSD grep difiere de GNU grep?

13

Mi computadora ejecuta macOS 10.12.3 y estoy usando la greputilidad instalada en el sistema con la versión 2.5.1-FreeBSD.

Estas son las salidas que obtengo al probar varias expresiones regulares:

Captura de pantalla

Pero si ejecuto estos utilizando GNU grep (versión 2.25) obtengo lo siguiente:

Captura de pantalla

El grep de GNU me parece correcto y los BSD son incorrectos, ¿no? ¿Por qué difieren? No entiendo por qué grep de BSD coincide con la "a" cuando la expresión regular especifica que debe seguir el comienzo de la línea.

Decade Moon
fuente
2
Siéntase libre de informar el primer comportamiento como un error.
Satō Katsura
1
Verás que echo 'bababa' | grep -E '^(a|b)'todo es rojo. Y tendrás el mismo problema con -o. Supongo que grepbusca múltiples coincidencias, pero para la segunda coincidencia y más, aplica la expresión regular a lo que está a la derecha de lo que coincidió la vez anterior (así ananaen la segunda vez en su caso) sin pasar el indicador REG_NOTBOL. Ver tambiénecho banana | grep -Eo '^ban|^ana$'
Stéphane Chazelas
2
@JdeBP, en mi OS X, se grepidentifica a sí mismo como grep (BSD grep) 2.5.1-FreeBSDcon la página de manual que se refiere a GNU solo al mencionar "opciones largas proporcionadas para compatibilidad con versiones de GNU". Además, no hay aviso de copyright o menciones de GPL (o FSF). Si tiene historia con la utilidad GNU, es difícil saberlo.
ilkkachu
Estamos demostrando cómo esto es engañoso. (-: Lo grepque se discute en la respuesta de Decade Moon que tantas personas piensan que es correcto se identifica como grep (GNU grep) 2.5.1-FreeBSD(como se puede ver en la discusión del error), tiene un aviso de derechos de autor FSF y definitivamente es GNU grep. Lo que FreeBSD llama bsdgrepes lo que OpenBSD llama grepy es BSD grep, sin ninguna --coloropción fuera de la variante de FreeBSD. Eso es lo que se identifica como grep (BSD grep) 2.5.1-FreeBSD, e irónicamente, es lo que una persona en la discusión de errores sugirió que FreeBSD cambiara grep.
JdeBP

Respuestas:

9

Creo que esto podría ser un error en grep de FreeBSD. Hay un informe de error con problemas similares.

Decade Moon
fuente