Límites de palabras grep

Pregunta:

De acuerdo con la documentación GNU:

‘\<’ Match the empty string at the beginning of word.
‘\>’ Match the empty string at the end of word.

Mi / etc / fstab se ve así:

/dev/sdb1       /media/fresh      ext2   defaults     0 0

Quiero que grep devuelva VERDADERO / FALSO para la existencia de / media / fresh. Intenté usar \< y \> pero no funcionó. ¿Por qué?

egrep '\</media/fresh\>' /etc/fstab

Solución alterna:

egrep '[[:blank:]]/media/fresh[[:blank:]]' /etc/fstab

Pero parece más feo.

Mi grep es 2.5.1

Respuesta:

\< y \> coinciden con una cadena vacía al principio y al final de una palabra, respectivamente, y solo los caracteres constituyentes de la palabra son:

[[:alnum:]_]

Desde man grep :

Word-constituent characters are letters, digits, and the underscore.

Entonces, su expresión regular está fallando porque / no es un carácter constituyente de palabra válido.

En cambio, como tiene espacios alrededor, puede usar la opción -w de grep para hacer coincidir una palabra:

grep -wo '/media/fresh' /etc/fstab

Ejemplo:

$ grep -wo '/media/fresh' <<< '/dev/sdb1       /media/fresh      ext2   defaults     0 0'
/media/fresh

Leave a Comment

Your email address will not be published. Required fields are marked *

web tasarım