Comando Grep
Comando Grep
Combinaciones
grep: El comando grep selecciona y muestra las lneas de los archivos que coincidan con la cadena o patrn dados. SINTAXIS: La sintaxis es grep [opciones] patrn [archivo] OPCIONES: -A Muestra el nmero de lneas de texto que hay despus de la lnea coincidente. -a No suprime las lneas de salida con datos binarios, las trata como texto. -b Mostrar el offset de bytes del archivo de entrada antes de cada lnea en la salida. -c Muestra la cuenta de lneas coincidentes. -d accin Definir accin para acceder a los directorios read lee todos los archivos del directorio. skip salta directorios. recurse lee reiterativamente todos los archivos y directorios
-e Patrn Busca un patrn. -h Muestra las lneas coincidentes pero no los nombres de archivo. -G Interpreta patrn como una expresin regular bsica. -i Ignora los cambios maysculas y minsculas, las considera equivalentes. -l Suprime la salida normal; en su lugar muestra el nombre de cada fichero de entrada que producira alguna salida. La bsqueda se detendr en la primera concordancia. -n Muestra la lnea y el nmero de lnea. -q Mostrar en modo silencioso, no muestra nada. -r Lee iterativamente todos los archivos en los directorios y subdirectorios encontrados. -v Muestra todas las lneas que no coinciden. -V Muestra la versin. -w Coincidencia en palabras completas nicamente. -s -Suprime los mensajes de error sobre ficheros que no existen o no se pueden leer.
-E Permite uso expresiones regulares. -F Extrae los patrones del archivo que especifiquemos. Los patrones deben ir uno por lnea. -x, Selecciona solamente aquellas concordancias que constan de toda la lnea. -y Sinnimo obsoleto de -i. -U Trata el(los) fichero(s) como binario(s). De forma predeterminada, bajo MS-DOS y MS-Windows, grep intenta adivinar el tipo del fichero mirando los contenidos de los primeros 32 kB ledos de l. Si grep decide que el fichero es de texto, quita los caracteres CR (retorno de carro) de los contenidos originales del fichero (para que las expresiones regulares con ^ y $ funcionen correctamente). Al especificar -U deshabilitamos este intento de adivinacin del tipo del fichero, haciendo que todos se lean y pasen al mecanismo de concordancia tal cuales; si el fichero lo es de texto y tiene al final de cada lnea el par de caracteres CR/LF, esto har que algunas expresiones regulares fallen. Esta opcin slo tiene sentido en MS-DOS y MS-Windows. -u Informa de desplazamientos de bytes al estilo de Unix. Esta opcin hace que grep muestre los desplazamientos de bytes como si el fichero fuera de texto al estilo de Unix; o sea, sin los caracteres CR al final de cada lnea. Esto producir resultados idnticos a ejecutar grep en un sistema Unix. Esta opcin no tiene efecto a menos que se d tambin la opcin -b; slo tiene sentido en MS-DOS y MS-Windows. Tambin puedes usar patrones para la operacin de bsqueda. . Coincidencia de caracteres nicos. * Carcter comodn. ^ Empieza por. $ Termina en. Ejemplos: o Mostrar por pantalla, las lneas que contienen comentarios en el archivo /boot/grub/menu.lst: o $ grep "#" /boot/grub/menu.lst o Enviar a un fichero las lneas del archivo /boot/grub/menu.lst que no son comentarios: o $ grep -v "#" /boot/grub/menu.lst
o Contar el nmero de interfaces de red que tenemos definidos en el fichero /etc/network/interfaces: o $ grep -c "iface" /etc/network/interfaces o Mostrar las lneas de un fichero que contienen la palabra BADAJOZ o HUELVA: o $ grep -e "BADAJOZ" -e "HUELVA" archivo o Mostrar las lneas de un fichero que contienen la palabra BADAJOZ o HUELVA, numerando las lneas de salida: o $ grep -n -e "BADAJOZ" -e "HUELVA" archivo o Mostrar los ficheros que contienen la palabra TOLEDO en el directorio actual y todos sus subdirectorios: o $ grep -r "TOLEDO" * Diferencia entre grep, fgrep y egrep Estn disponibles dos programas que son variantes de grep: egrep y fgrep. egrep es similar (pero no idntico) a grep -E, y es compatible con el egrep histrico de Unix. fgrep es lo mismo que grep -F. fgrep
El comando fgrep es similar a grep, pero con tres diferencias principales: se puede utilizar para buscar varios objetivos al mismo tiempo, no permite utilizar expresiones regulares para buscar patrones y es ms rpida que grep. Cuando se busca en un archivo grande o en varios pequeos, la diferencia de velocidad puede ser significativa. Con fgrep se pueden buscar las lneas que contengan uno cualquiera de varios objetivos alternativos. Por ejemplo, la siguiente orden busca las entradas en el archivo recetas.txt que contengan las palabras "pollo" o "pavo". fgrep no acepta expresiones regulares, los objetivos deben ser cadenas de texto. egrep
egrep es el componente ms potente de la familia de rdenes grep. Al igual que fgrep, se puede utilizar para buscar mltiples objetivos. Lo mismo que grep, permite usar expresiones regulares para especificar los objetivos, pero proporciona un conjunto ms completo y potente de expresiones regulares que grep. egrep acepta todas las expresiones regulares bsicas reconocidas por grep, as como varias extensiones tiles como las de la siguiente tabla:
Smbolo + ? | ()
Significado Una o ms repeticiones del carcter precedente. Cero o ms repeticiones del carcter precedente. Identifica cualquiera de dos o ms elementos. Trata el texto entre parntesis como un grupo.
Se puede decir a egrep que busque varios objetivos de dos formas: colocndolos sobre lneas independientes como en fgrep, o separndolos con la barra vertical o smbolo del cauce ( | ). Por ejemplo, el siguiente comando utiliza el smbolo del cauce para decir a egrep que busque las entradas correspondientes a ana, juan y pedro en el archivo telefonos.txt: $ egrep "ana|juan|pedro" telefonos.txt