grep


grepes 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 de la ed comando g / re / p ( g lobally buscar un r egular e Xpression y p líneas coincidentes Rint ), que tiene el mismo efecto. [3] [4] grep fue desarrollado originalmente para el sistema operativo Unix , pero luego disponible para todos los sistemas similares a Unix y algunos otros como OS-9 . [5]

Antes de que fuera nombrado, grep era una utilidad privada escrita por Ken Thompson para buscar archivos para ciertos patrones. Doug McIlroy , sin darse cuenta de su existencia, le pidió a Thompson que escribiera un programa de este tipo. Respondiendo que pensaría en tal utilidad de la noche a la mañana, Thompson realmente corrigió errores e hizo mejoras durante aproximadamente una hora. 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 los 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 se podía usar en una gran cantidad de texto, por lo que Thompson extrajo ese código en una herramienta independiente. [1] Eligió el nombre porque en ed, el comando g / re / p imprime todas las líneas que coinciden con un patrón específico. [8] [9] se incluyó por primera vez en la versión 4 de Unix . Afirmando que "generalmente se cita como grepla herramienta de software prototípica ", a McIlroy se le atribuye grep" arraigar irrevocablemente "la filosofía de las herramientas de Thompson en Unix. [10]

Hay una variedad de grepimplementaciones disponibles en muchos sistemas operativos y entornos de desarrollo de software. [11] Las primeras variantes incluidas egrepy fgrep, introducidas en la versión 7 de Unix . [10] La egrepvariante " " 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 fgrepvariante " " busca cualquiera de una lista de cadenas fijas utilizando el algoritmo de coincidencia de cadenas Aho-Corasick . [13] Los binarios de estas variantes persisten en la mayoría de los sistemas modernos, por lo general vinculados agrep; Sin embargo, el uso de estos binarios se ha desaprobado en favor de la utilización de las -Ey -Flos modificadores de línea de comandos de grep cambio. [14]

Otros comandos contienen la palabra "grep" para indicar que son herramientas de búsqueda, generalmente las que se basan en coincidencias de expresiones regulares. La pgreputilidad, 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 se suele nombrar filtero whereen otros idiomas.