¿Cómo buscaría una cadena alfanumérica de 1 a 50 caracteres (idealmente, cualquier longitud también funcionaría) con dos puntos a cada lado? Un resultado típico sería todas las líneas que contienen la cadena :shopping:
. Hasta ahora tengo el siguiente código (he probado algunas variaciones) que no funciona:
grep ':[[:alnum:]]{1,100}:' ~/x.txt
grep
al incluir el-E
conmutador.Respuestas:
Debe habilitar expresiones regulares extendidas para esto:
fuente
Con expresiones regulares básicas, puedes escribirlo como:
Tenga en cuenta que
\{
(a diferencia de\+
o\?
por ejemplo) es estándar y portátil, y en realidad los equivalentes BRE de+
y?
generalmente se escriben con\{
:\{1,\}
y\{0,1\}
.grep -E
Sin embargo, también es estándar y portátil, por lo que podría usarlo ya que genera expresiones regulares más legibles en esos casos.fuente
Está utilizando una expresión regular extendida, por lo que debe usar la opción -E:
fuente
Como nadie más lo mencionó, también puede usarlo
egrep
, que, según tengo entendido, es equivalente agrep -E
.fuente
egrep
fue el comando histórico de grep con ERE. La funcionalidad de grep y egrep se ha fusionado (hace mucho tiempo) en grep con la opción -E.egrep
ahora se considera obsoleto / en desuso (pero es poco probable que pase, ya que algunas personas todavía están acostumbradas).