Grep
De Wikipedia, la enciclopedia libre
- El título de este artículo es grep. La letra inicial se muestra en mayúscula debido a limitaciones técnicas.
grep es una utilidad de la línea de comandos escrita originalmente para ser usada con el sistema operativo Unix. Usualmente, grep toma una expresión regular de la línea de comandos, lee la entrada estándar o una lista de archivos, e imprime las líneas que contengan coincidencias para la expresión regular.
Su nombre deriva de un comando en el editor de texto ed que tiene la siguiente forma:
- g/re/p
y significa "hacer una búsqueda global para las líneas que encajen con la expresión regular (regular expression en inglés), e imprimirlas". Hay varios argumentos que se pueden usar con grep para modificar el comportamiento por defecto.
Existen otros backrónimos (incorrectos) para el nombre, entre ellos: General Regular Expression Parser (analizador general de expresiones regulares), General Regular Expression Print (imprimir expresión regular general), y Global Regular Expression Print (imprimir expresión regular global), éste último no tan lejano de la realidad.
Uso:
$ grep [opciones] [expresión regular] [archivo]
Tabla de contenidos |
[editar] Historia
Grep es fruto de la filosofía “modular” de Unix: crear pequeños programas altamente especializados en una sola cosa, para luego utilizarlos combinados por medio de tuberías. Eventualmente el programa apareció en otras encarnaciones, como por ejemplo en DOS, actuando como herramienta de apoyo a compiladores. Han existido varios intentos para darle una interfaz gráfica al programa, pero hasta ahora grep sigue siendo utilizado principalmente en líneas de comandos, mezclado con otros programas como tail, ps, y less. La versión más popular es GNU Grep, que está disponible para diversos sistemas operativos, entre ellos Microsoft Windows.
[editar] Funcionamiento
Grep generalmente ejecuta alguna variante del algoritmo Boyer-Moore (para búsqueda de strings), utilizando expresiones regulares para definir la consulta. Puede manejar archivos, directorios (y subdirectorios), o la entrada estándar (stdin).
El programa es configurable por medio de opciones de invocación, pudiendo (por ejemplo) mostrar las líneas con aciertos, desaciertos, el contexto de la coincidencia, etc.
[editar] Parámetros comunes
- -i: Insensible a mayúsculas o minúsculas
- -c: Resumen de aciertos por archivo
- -C n: Mostrar contexto de n líneas
- -E: Usa expresiones regulares extendidas
- -L: Resumen de archivos sin aciertos
- -n: Muestra el número de línea (con respecto al archivo)
- -r: Busca en subdirectorios
- -v: Encuentra las líneas que no contengan coincidencias
[editar] Ejemplos
Para mostrar todas las líneas que contienen la cadena "tal" en una lista de archivos (donde "*" representa todos los archivos en el directorio actual):
- grep tal *
Para mostrar todas las líneas que no contengan la cadena "tal", se usa "-v":
- grep -v tal *
Para mostrar sólo el nombre de tales archivos, se usa "-l":
- grep -l tal *
Para mostrar sólo el nombre de los archivos que no contienen la cadena, se usa "-L":
- grep -L tal *
Para buscar recursivamente, no sólo en los archivos del directorio actual sino también en los de sus subdirectorios (donde "." representa el directorio actual), se usa "-r":
- grep -r tal .
La opción -r puede no estar disponible en todas las plataformas Unix.
Para buscar todas las líneas que comienzan por "Ahora" y terminan con "siempre" seguido de una cantidad arbitraria de espacio en blanco (nótese que el carácter ^ representa el inicio de la línea, así como $ representa el final):
- grep '^Ahora.*siempre *$'
Para hacer que grep lea de la entrada estándar, no se especifica archivo alguno. Por ejemplo, como ps -ef lista todos los procesos actualmente en ejecución, el siguiente comando imprime todos los procesos que está ejecutando el usuario actual:
- ps -ef | grep $USER
[editar] Variantes
Existen muchos derivados de grep; por ejemplo agrep, que significa approximate grep (grep aproximado), y sirve para hacer una búsqueda aproximada de cadenas; fgrep para buscar patrones fijos; egrep para búsquedas que involucren expresiones regulares más complejas; y tcgrep, que utiliza la sintaxis de expresiones regulares de Perl. Todas estas variantes de grep han sido llevadas a diversos sistemas operativos.
Muchos otros comandos contienen la cadena "grep". Por ejemplo pgrep, que muestra los procesos cuyos nombres encajan con cierta expresión regular.
En Perl existe la función grep, que recibe una expresión regular y una lista, y regresa los elementos de la lista que encajan con dicha expresión.
El sistema Windows tiene una utilidad llamada "findstr", que aproxima las funciones de "grep".
[editar] Véase también
[editar] Enlaces externos
- GNU grep - el grep que viene con las distribuciones GNU/Linux.
- manual de grep (en inglés)
- documentación de texinfo (en inglés)
- Documentación (en inglés)
Programas y comandos Unix de línea de comandos (more) | |||
Gestión de Ficheros: | cat | cd | chmod | chown | chgrp | cp | du | df | file | fsck | ln | ls | lsof | mkdir | mount | mv | pwd | rm | rmdir | split | touch | ||
Gestión de procesos: | at | chroot | crontab | exit | kill | killall | nice | pgrep | pidof | pkill | ps | sleep | time | top | wait | watch | ||
Gestión de Usuarios/Entorno: | env | finger | id | mesg | passwd | su | sudo | uname | uptime | w | wall | who | whoami | write | date | ||
Procesado de texto: | awk | cut | diff | ex | head | iconv | join | less | more | paste | sed | sort | tail | tr | uniq | wc | xargs | ||
Programación Shell: | echo | expr | printf | unset | Imprimiendo: | lp |
Gestión de redes: inetd | netstat | ping | rlogin | traceroute |
Búsqueda: find | grep | strings |
Miscelánea: banner | bc | cal | man | size | yes |