¿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

grepal incluir el-Econmutador.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 -ESin 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
egrepfue 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.egrepahora se considera obsoleto / en desuso (pero es poco probable que pase, ya que algunas personas todavía están acostumbradas).