Yo tampoco. (Cygwin) ¿Querías tener \+? Qué significa eso?
Eric Wilson
sí, estoy en Ubuntu 10.04, usando bash. Para BRE en grep, debe escapar algunos caracteres. Pruebe "Expresiones regulares básicas vs extendidas" en man grep.
Ankur Agarwal
2
@FarmBoy: +en una expresión regular significa "uno o más de los tokens anteriores". En este caso, se escapa porque esa es la sintaxis requerida por grepel motor de expresiones regulares predeterminado.
Daenyth
2
@FarmBoy: +debe escaparse si está usando grep; si está usando egrep, no lo hace. grep -Ees equivalente a egrep(al menos para la versión GNU).
Keith Thompson
Respuestas:
196
grepEl modo predeterminado es (iirc) POSIX regex, y \des pcre. Puede pasar -Pa gnu grep, para expresiones regulares similares a perl, o usar en [[:digit:]]lugar de \d.
El modo -E de BSD grep incluye \ d. Pero el modo -E de GNU grep no lo hace. Eso es tan evidente que me sorprende que lo esté descubriendo ahora.
Keith Tyler
> El modo -E de BSD grep incluye \ d. Pero el modo -E de GNU grep no lo hace. Eso es tan evidente que me sorprende que lo esté descubriendo ahora. Esto solo me mordió en un script de validación de mensajes de confirmación de git. Me sorprendió mucho que fuera el culpable.
\+
? Qué significa eso?+
en una expresión regular significa "uno o más de los tokens anteriores". En este caso, se escapa porque esa es la sintaxis requerida porgrep
el motor de expresiones regulares predeterminado.+
debe escaparse si está usandogrep
; si está usandoegrep
, no lo hace.grep -E
es equivalente aegrep
(al menos para la versión GNU).Respuestas:
grep
El modo predeterminado es (iirc) POSIX regex, y\d
es pcre. Puede pasar-P
a gnu grep, para expresiones regulares similares a perl, o usar en[[:digit:]]
lugar de\d
.fuente
Prueba esto
$ echo 'this 1 2 3' | grep '[0-9]\+'
fuente