Creador | Ken Thompson |
---|---|
Primera versión | 1974 |
Sistema de explotación | Tipo Unix y Unix |
Tipo | Utilidad UNIX ( d ) |
grep es un programa de búsqueda de cadenas de línea de comandos , originalmente escrito para UNIX por Ken Thompson , y posteriormente mejorado mediante el algoritmo Aho-Corasick .
Hay muchas implementaciones de grep en diferentes sistemas , especialmente en todos los sistemas similares a UNIX. Una de las implementaciones más populares es GNU grep.
Históricamente, el nombre proviene de uno de los comandos del editor de texto ed disponibles en UNIX, cuya sintaxis es:
:g/re/pEste medio de comando "buscar g verall coincidencias con la expresión regular (en Inglés, r egular e Xpression ) e impresión ( p rint líneas en las que corresponda)." Por defecto, grep se comporta exactamente como este comando. Sin embargo, existen muchas opciones de línea de comandos para cambiar su comportamiento.
El comportamiento habitual de grep es tomar una expresión regular como argumento, leer datos de una entrada estándar o una lista de archivos y escribir líneas que contengan coincidencias con la expresión regular en la salida estándar.
Por ejemplo, grep le permite buscar líneas que contengan el nombre Durand en un archivo de contacto telefónico:
$ grep Durand ListeNuméros.txtsolo devolverá líneas que contengan Durand :
Guénolé Durand, 0723237694 Bernard Durand, 0966324355grep es un filtro que permite combinarlo con otros comandos en forma de canalización .
Su rendimiento y facilidad de uso lo hacen adecuado para la búsqueda eficiente de cadenas en un árbol complejo de archivos. Por ejemplo, se utiliza para buscar todas las apariciones del nombre de una función en el código fuente de un programa o de cadenas en archivos de configuración. A pesar de la presencia de una funcionalidad similar en muchos programas, como Emacs o vi , muchos usuarios prefieren usar grep directamente, incluso cuando están usando esos programas.
El comando grep se limita a ciertos aspectos de los personajes. Por ejemplo, no permite buscar en archivos codificados en UTF-16. Sin embargo, las búsquedas son posibles si el archivo se ha convertido previamente al formato UTF-8. Sin embargo, el soporte para UTF-8 solo es posible cuando se considera cada carácter como una secuencia de bytes.
Hay muchos derivados de grep. Entre ellos :
Tenga en cuenta que grep egrep fgrepy rgrepse distribuyó en varios archivos binarios separados en algunas versiones de Unix, razón por la cual todavía son accesibles a menudo. Pero en realidad, hoy tienen exactamente los mismos efectos que las distintas opciones grep.
La mayoría de estas variantes de grep se han adaptado a muchos sistemas operativos. Esto se denomina implementación moderna de grep.
Muchos otros comandos contienen la palabra "grep". Por ejemplo, la utilidad pgrep muestra el número de procesos cuyos nombres coinciden con la expresión regular .
GNU grep es la implementación del comando UNIX grep por el Proyecto GNU iniciado por Richard Stallman en la década de 1980. Es un software gratuito distribuido bajo los términos de la Licencia Pública General GNU .
El comando grep fue escrito originalmente para UNIX por Ken Thompson . Como parte del Proyecto GNU , Mike Haerkal implementará grep en software libre antes de finales de la década de 1980.
La aplicación grep del proyecto GNU es ahora ampliamente utilizado por los sistemas Linux , FreeBSD , sino también Mac OS X .
Como acrónimo , "grep" es una palabra que se puede pronunciar, tanto en francés como en inglés. Los usuarios de grep de habla inglesa a menudo usan su nombre como verbo, que significa "buscar algo en un archivo" , como se haría con la utilidad grep. El objeto directo luego designa los archivos en los que buscar: “ Kibo puso su nombre en el carrete de Usenet . (Lo que significa: "Kibo buscó su nombre en su bobina de Usenet "). En francés, la palabra se usa más raramente como un verbo del primer grupo: "greppe les logs para ver si el servidor ha recibido su solicitud". "
Por extensión, la palabra "grep" también se ha convertido en sinónimo de las propias expresiones regulares. Actualmente, muchos editores o procesadores de texto ofrecen funciones de búsqueda mediante expresiones regulares, a las que a menudo se refieren como "herramienta grep" o "modo grep", en el que se pueden introducir patrones grep. Esta imprecisión es confusa, especialmente en entornos que no son UNIX.
El comando findtr de Windows es en realidad QGrep, un GREP adecuado para Windows. Admite expresiones regulares, pero su sintaxis difiere ligeramente de grep.
Para tener el mismo grep en Windows, debe instalar cygwin o más simplemente el grep del proyecto GnuWin32 . También se puede encontrar una versión adecuada en el sitio de Tim Charron (consulte los enlaces externos a continuación).
El comando include en Cisco IOS realiza las funciones más básicas de grep. Por ejemplo, el programa show running-config | include 192.168.1.1 mostrará las líneas de la configuración activa que contienen la dirección 192.168.1.1.
ack, escrito en Perl, es un software definido como "ack, mejor que grep, una poderosa herramienta de investigación para programadores":