grep
es una utilidad de línea de comandos para buscar conjuntos de datos de texto sin formato para líneas que coincidan con una expresión regular . Su nombre proviene del comando edg/re/p
( g lobal / regular e xpression search / and print ), que tiene el mismo efecto. [3] [4] grep
fue desarrollado originalmente para el sistema operativo Unix , pero luego estuvo disponible para todos los sistemas similares a Unix y algunos otros como OS-9 . [5]
Antes de que se le diera nombre, grep era una utilidad privada escrita por Ken Thompson para buscar ciertos patrones en archivos. Doug McIlroy , ignorante de su existencia, pidió a Thompson que escribiera dicho programa. Respondiendo que pensaría en dicha utilidad de la noche a la mañana, Thompson corrigió errores e hizo mejoras durante aproximadamente una hora en su propio programa llamado s
(abreviatura de "búsqueda"). Al día siguiente le presentó el programa a McIlroy, quien dijo que era exactamente lo que quería. El relato de Thompson puede explicar la creencia de que grep se escribió de la noche a la mañana. [6]
Thompson escribió la primera versión en lenguaje ensamblador PDP-11 para ayudar a Lee E. McMahon a analizar el texto de The Federalist Papers para determinar la autoría de los artículos individuales. [7] El editor de texto ed (también escrito por Thompson) tenía soporte para expresiones regulares pero no podía usarse para buscar en una cantidad tan grande de texto, ya que cargaba el archivo completo en la memoria para permitir la edición de acceso aleatorio , por lo que Thompson extrajo eso código regexp en una herramienta independiente que, en su lugar, procesaría archivos arbitrariamente largos de forma secuencial sin almacenar demasiado en la memoria. [1] Eligió el nombre porque en ed, el comando g/re/p imprimiría todas las líneas que presentasen una coincidencia de patrón especificada. [8] [9] se incluyó por primera vez en la Versión 4 de Unix . Al afirmar que "generalmente se la cita como la herramienta de software prototípica", McIlroy le atribuye el mérito de "arraigar irrevocablemente" la filosofía de las herramientas de Thompson en Unix. [10] grep
grep
Hay una variedad de grep
implementaciones disponibles en muchos sistemas operativos y entornos de desarrollo de software. [11] Las primeras variantes incluidas egrep
y fgrep
, introducidas en la Versión 7 de Unix . [10] La egrep
variante " " admite una sintaxis de expresión regular extendida agregada por Alfred Aho después de la implementación de expresión regular original de Ken Thompson . [12] La fgrep
variante " " busca cualquiera de una lista de cadenas fijas utilizando el algoritmo de coincidencia de cadenas de Aho-Corasick . [13] Los binarios de estas variantes existen en los sistemas modernos, generalmente enlazando grep
o llamando a grep como un script de shell con el indicador apropiado agregado, por ejemplo exec grep -E "$@"
. egrep
y fgrep
, aunque comúnmente se implementan en sistemas POSIX, hasta el punto que la especificación POSIX menciona su existencia generalizada, en realidad no son parte de POSIX. [14]
Otros comandos contienen la palabra "grep" para indicar que son herramientas de búsqueda, normalmente aquellas que se basan en coincidencias de expresiones regulares. La pgrep
utilidad, por ejemplo, muestra los procesos cuyos nombres coinciden con una expresión regular determinada. [15]
En el lenguaje de programación Perl , grep es el nombre de la función incorporada que encuentra elementos en una lista que satisfacen una determinada propiedad. [16] Esta función de orden superior normalmente recibe nombre filter
o where
está en otros idiomas.
El pcregrep
comando es una implementación grep
que utiliza la sintaxis de expresión regular de Perl . [17] Se puede invocar una funcionalidad similar en la versión GNU grep
con la -P
bandera. [18]
Los puertos de grep
(dentro de Cygwin y GnuWin32 , por ejemplo) también se ejecutan en Microsoft Windows . Algunas versiones de Windows cuentan con el comando similar qgrep
o findstr
. [19]
Un grep
comando también forma parte de las herramientas MSX-DOS2 de ASCII para MSX-DOS versión 2. [20]
Los comandos grep , egrep y fgrep también se han adaptado al sistema operativo IBM i . [21]
El software Adobe InDesign tiene funciones GREP (desde la versión CS3 (2007) [22] ), en el cuadro de diálogo buscar/cambiar [23] pestaña "GREP", e introducidas con InDesign CS4 [24] en estilos de párrafo [25] "GREP estilos".
un grep (grep aproximado) coincide incluso cuando el texto sólo se ajusta aproximadamente al patrón de búsqueda. [26]
La siguiente invocación encuentra máscaras de red en el archivo myfile , pero también cualquier otra palabra que pueda derivarse de él, dadas no más de dos sustituciones.
agrep -2 máscaras de red miarchivo
Este ejemplo genera una lista de coincidencias con las sustituciones más cercanas, es decir, las que tienen menos, enumeradas en primer lugar. La bandera de comando B significa mejor :
agrep -B máscaras de red miarchivo
En diciembre de 2003, el Oxford English Dictionary Online añadió "grep" como sustantivo y verbo. [27]
Un uso verbal común es la frase "No se pueden buscar árboles muertos", lo que significa que uno puede buscar más fácilmente a través de medios digitales, usando herramientas como grep
, que con una copia impresa (es decir, una hecha de "árboles muertos", que en este contexto es un disfemismo para el papel). [28]
grep
grep
grep
"QGREP.EXE[:] Una herramienta similar a grep en UNIX, esta herramienta se puede utilizar para buscar una cadena de texto