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