El propósito de este capítulo es introducir un número pequeño de herramientas de la línea de comandos que pueden resultar ser útiles para el uso diario. Por supuesto, puede saltar este capítulo si tiene la intención de usar sólo un entorno gráfico, pero un pequeño vistazo puede cambiar su opinión :-)
En realidad este capítulo no está organizado. Los utilitarios se indican sin un orden en particular, desde los más usados hasta los más complejos. Cada comando se ilustrará con un ejemplo, pero se le deja como ejercicio encontrar usos más útiles para ellos.
(Analizador Sintáctico General de Expresiones Regulares)
De acuerdo, el nombre no es muy intuitivo, tampoco su acrónimo, pero su uso es simple: buscar el patrón pasado como argumento en uno o más archivos. Su sintaxis es:
grep [opciones] <patrón> [uno o más archivos] |
Si se mencionan varios archivos, su nombre aparecerá antes de las líneas que muestran los resultados que se corresponden con el criterio de búsqueda. Use la opción -h para ocultar estos nombres; use la opción -l para mostrar solo los nombres de archivo en los cuales se cumple la condición de búsqueda. Puede ser útil, especialmente en listas de argumentos largas, recorrer los archivos con un bucle del shell y usar el truco siguiente: grep <patrón> <nombre_de_archivo> /dev/null. El patrón es una expresión regular, aunque generalmente consiste en una palabra simple. Las opciones usadas más frecuentemente son las siguientes:
-i: Realizar una búsqueda que ignore la capitalización [1].
-v: Búsqueda inversa: mostrar las líneas que "no" se corresponden con el patrón.
-n: Mostrar, para cada línea encontrada, el número de línea.
-w: Le dice a grep que el patrón debe corresponderse con una palabra completa, es decir debe aparecer tal cual y no como parte de otra palabra.
Aquí tiene un ejemplo del uso de grep:
$ cat mi_padre Hola papá Hola papi Adiós papá # Buscar la cadena "hola", sin distinguir entre mayúsculas y minúsculas $ grep -i hola mi_padre Hola papá Hola papi # Buscar "papá" como palabra completa, e imprimir el número de línea # al principio de cada coincidencia $ grep -nw papá mi_padre 1:Hola papá 3:Adiós papá # Queremos que coincidan todas las líneas que no comiencen con una "H" $ grep -v "^H" mi_padre Adiós papá $ |
En caso que quiera usar grep en una tubería, no tiene que especificar el nombre del archivo ya que, predeterminadamente, toma su entrada desde la entrada estándar. Similarmente, de manera predeterminada, imprime los resultados en la salida estándar, por lo que puede meter la salida de un grep por una tubería a otro programa más sin miedo. Ejemplo:
$ cat /usr/doc/HOWTO/Parallel-Processing-HOWTO | \ grep -n thread | less |
[1] | Distinción entre las mayúsculas y las minúsculas |