Comandos no shell: grep

Este comando de gran utilidad tiene un nombre poco usual que se refiere a general regular expression parser. Para rastrear el sistema en busca de archivos usamos find, y para rastrear los archivos en busca de cadenas usamos grep. De hecho, cuando se usa find, se suele transmitir también grep a modo de comando detrás de -exec.

El comando grep tiene opciones, un patrón que cumplir, y archivos en los que buscar:

grep_ejemplo1Si no especificamos ningún nombre de archivo, rastrea las entradas estándar. Echemos un vistazo a las principales opciones más usadas de grep:

grep_opcionesEl uso básico de grep lo veremos con estos ejemplos de algunas correspondencias básicas:

Este ejemplo no usa opciones, simplemente busca la cadena “soy” en el archivo palabra.txt y muestra cualquier línea que cumpla dicho requisito. El nombre de archivo no aparece porque la búsqueda la hacemos en un solo archivo.

grep_basicoEste ejemplo recuenta el número de líneas que cumplen el requisito en dos archivos diferentes. En este caso, si que muestra el nombre del archivo.

grep_cuentalineasFinalmente, usa la opción -v para invertir la búsqueda y contabilizar las líneas de los archivos que no cumplen el patrón.

grep_linea_3Veamos las expresiones regulares que nos permiten realizar una correspondencia más sofisticada:

grep_expresiones_regularesSi desea usar alguno de estos caracteres como “caracteres normales”, debe incluir \ delante. Por ejemplo, si desea buscar un carácter $ literal, debería usar \$. También existen caracteres de correspondencia muy útiles que se pueden usar entre corchetes, tal como describimos en la tabla de abajo.

grep_correspondenciaAdemás, si se especifica -E para la correspondencia extendida, la expresión regular puede ir seguida de otros caracteres que controlan la fiscalización de la correspondencia (véase la siguiente tabla). Con grep también hace falta añadir \ delante de los caracteres.

grep_caracteresEl modo más sencillo para comprender las expresiones regulares es poner el conocimiento en práctica. Vallamos paso a paso:

  1. En primer lugar buscaremos en las líneas que acaben en s usando el carácter especial $:grep_ejemploPodemos ver que nos muestra las líneas acabadas en s.
  2. Imagine que queremos encontrar palabras que terminen con la letra a. Para hacerlo tiene que usar los caracteres de correspondencia especiales entre paréntesis. En este caso, puede usar [[:blank:]], que busca espacios en blanco o tabuladores.grep_ejemplo2
  3. Ahora busque palabras de tres letras que empiecen por vid. En este supuesto necesita [[:space:]] para delimitar el final de la palabra y . para buscar un carácter adicional único:grep_ejemplo3
  4. Finalmente, el modo grep ampliado para buscar palabras en minúscula que tengan exactamente 9 caracteres. Lo hacemos especificando un rango de caracteres de la a a la z, y una repetición de 9 correspondencias:

    grep_ejemplo4

En este apartado simplem,ente hemos estudiado más o menos las partes importantes de las expresiones regulares. El mejor modo de ir aprendiendo es mediante la práctica.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s