Seminario sobre grep 1 grep (Global Regular Expresion Printer) Efectúa una selección en el(los) fichero(s) de entrada, y muestra las lı́neas que contienen una expresión dada. grep [opciones] expresión [ficheros] ☛ Blancos y caracteres especiales necesitan ’. ☛ Condición inversa con el parámetro -v. ☛ Otras condiciones: ❐ ˆ denota principio de lı́nea. ❐ $ denota fin de lı́nea. ❐ . denota cualquier caracter. ☛ Admite rangos de caracteres [A-D]. Félix Sánchez C.I.C.A. Seminario sobre grep 2 Ejemplos: grep Maria Pepe.text grep ˆ1995 fechas.dat grep ’[Mm]anolo’ telef.tel grep ’simple cosa’ texto.tex ls -lg | grep ’\.tex’ grep pepe *.dat datos2.dat: pepe estaba sentado en la silla datos2.dat: Al lado de pepe iba yo datos3.dat: 4582900 pepe almoguera, calle... Félix Sánchez C.I.C.A. Seminario sobre grep 3 fgrep ☛ Sólo usa cadenas fijas. ☛ No usa caracteres especiales. ☛ Puede tomar las expresiones de un fichero. ❐ Cada expresión en una sóla lı́nea. ❐ Se pueden usar lı́neas de continuación con el caracter \. Félix Sánchez C.I.C.A. Seminario sobre grep 4 egrep ☛ Permite hacer casos en la búsqueda. ☛ Los patrones de búsqueda alternativos se separan con el caracter |. Se denominan alternation. ☛ Una alternation debe estar encerrada por paréntesis. ☛ Dado que los paréntesis son caracteres especiales para el shell, hay que encerrarlos por ’. ☛ Ejemplo: egrep ’(pepe|juan)’fich.dat ☛ Se puede intercalar una alternation en un patrón más amplio: egrep ’soy (pepe|juan) perez’ fich.dat Félix Sánchez C.I.C.A. Seminario sobre grep 5 Opciones de la familia -v Invierte las condiciones de búsqueda: las lı́neas que no contienen la expresión dada. -x Muestra solamente las lı́neas que encajan con la expesión exactamente (solo válida con fgrep). -c Muestra el contador de las lı́neas identificadas. -l Muestra solamente una vez los nombres de los ficheros con lı́neas identificadas, separados por una lı́nea blanca. -n Muestra lı́neas con su número. -b Precede la lı́nea identificada con el número de bloque en que se ha encontrado. Sólo es útil para trabajar “a bajo nivel” (con localizadores del disco). Félix Sánchez C.I.C.A. Seminario sobre grep 6 Opciones de la familia(cont.) -i No difiere entre mayúsculas o minúsculas. No es válida con egrep. -s No muestra las lı́neas, es decir trabaja en silencio. Útil en procedimientos de comandos, en conjunto con el control de estatus. -w Busca la expresión como si se tratase de una sola palabra. Es sólo válida con grep. -e Emplea el primer argumento como expresión de búsqueda, es decir, no añade nada nuevo, salvo cuando la expresión comienza con el caracter “-”. -f Toma la(s) expresión(es) del fichero que se le pasa como primer argumento. Sólo con egrep o fgrep. Félix Sánchez C.I.C.A. Seminario sobre grep 7 find find / -name core -atime +7 -exec rm {} \; ☛ Revisa una estructura de directorios, buscando un fichero. ☛ Los ficheros cumplen alguna condición dada. ☛ Sobre los ficheros encontrados se ejecuta una acción (de find) dada. ☛ Hay dos posibles acciones de find sobre los ficheros: ❐ Ejecutar un comando del shell. ❐ Mostrar el nombre completo (relativo al búsqueda) del mismo. ☛ La evalución de parámetros de find es left-to-right, por lo que la accón a ejecutar debe ser posterior a las condiciones. Félix Sánchez C.I.C.A. Seminario sobre grep 8 Parámetros de find -name fichero Verdad si el nombre de fichero se encuentra en el directorio de búsqueda. Son válidos la mayorı́a de los caracteres de expansión de nombres de ficheros, siempre que se escapen con \. -perm octal Verdad si los permisos de acceso al fichero son idénticos al valor octal que se da como argumento. -type c Verdad si el tipo de fichero dado es igual al tipo dado. El valor de c puede ser: d para directorio, f para fichero normal, l si es un link, etc. Félix Sánchez C.I.C.A. Seminario sobre grep 9 Parámetros de find(cont.) -user usuario Verdad si el usuario dado como argumento es el mismo que el propietario del fichero: numérico o username. -group grupo Verdad si el fichero está a nombre de uno de los componentes del grupo. -newer fichero Verdad si el fichero de argumento es mas viejo que el dado como argumento. -size tamaño Verdad si el fichero tiene el tamaño especificado. El tamaño son 512K. -mtime dı́as Verdad si el fichero ha sido alterado en el número de dı́as dado. -atime dı́as Verdad si el fichero no ha sido accedido en los últimos dı́as. Félix Sánchez C.I.C.A. Seminario sobre grep 10 Parámetros de find, acciones -exec comd Verdad si el comando del shell pasado como argumento devuelve un código de estatus cero. El final del comando debe ser el caracter “;”. Los argumentos del comando se encierran entre los caracteres “{” y “}”. -ok commando Igual que el anterior, pero muestra el comando en pantalla, y toma la posible entrada que necesite de ahı́. Puede usarse con editores, etc. El comando espera para ser ejecutado. -print Es siempre verdad. Su única acción es mostrar el nombre del fichero, con el path en pantalla. Félix Sánchez C.I.C.A.