grep

Utilidad de línea de comandos de Unix para búsqueda de texto
grep
Autor(es) original(es)Ken Thompson [1] [2]
Desarrollador(es)Laboratorios Bell de AT&T
Lanzamiento inicialNoviembre de 1973 ; hace 50 años [1] ( 1973-11 )
Escrito endo
Sistema operativoUnix , similar a Unix , Plan 9 , Inferno , OS-9 , MSX-DOS , IBM i
PlataformaMultiplataforma
TipoDominio

grepes una utilidad de línea de comandos para buscar conjuntos de datos de texto sin formato en busca de líneas que coincidan con una expresión regular . Su nombre proviene del comando edg/re/p (búsqueda e impresión de expresiones regulares globales), que tiene el mismo efecto. [3] [4] grep se desarrolló originalmente para el sistema operativo Unix , pero luego estuvo disponible para todos los sistemas similares a Unix y algunos otros como OS-9 . [5]

Historia

Antes de que se le pusiera nombre, grep era una utilidad privada escrita por Ken Thompson para buscar determinados patrones en los archivos. Doug McIlroy , que desconocía su existencia, le pidió a Thompson que escribiera un programa de este tipo. Thompson respondió que pensaría en una utilidad de este tipo durante la noche, y en realidad corrigió errores e hizo mejoras durante aproximadamente una hora en su propio programa llamado s(abreviatura de "search"). Al día siguiente, 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 documentos individuales. [7] El editor de texto ed (también creado 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 ese código de expresión regular en una herramienta independiente que, en cambio, 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 presentaran 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 cita como la herramienta de software prototípica", McIlroy le atribuye el mérito de "inculcar irrevocablemente" la filosofía de herramientas de Thompson en Unix. [10] grepgrep

Implementaciones

Hay una variedad de grepimplementaciones disponibles en muchos sistemas operativos y entornos de desarrollo de software. [11] Las primeras variantes incluyeron 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 existen en los sistemas modernos, generalmente enlazando grepo llamando a grep como un script de shell con el indicador apropiado agregado, por ejemplo exec grep -E "$@". egrepy fgrep, aunque se implementan comúnmente en sistemas POSIX, hasta el punto en 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 pgreputilidad, por ejemplo, muestra los procesos cuyos nombres coinciden con una expresión regular dada. [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 se denomina filtero whereen otros lenguajes.

El pcregrepcomando es una implementación de grepque utiliza la sintaxis de expresión regular de Perl . [17] Se puede invocar una funcionalidad similar en la versión GNU de grepcon el -Pindicador. [18]

Los puertos de grep(dentro de Cygwin y GnuWin32 , por ejemplo) también funcionan en Microsoft Windows . Algunas versiones de Windows cuentan con el comando qgrepor similar . [19]findstr

Un grepcomando también es 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 portado 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 los estilos de párrafo [25] “Estilos GREP”.

de acuerdo

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 más cercanas, es decir, las que tienen menos sustituciones, listadas primero. El indicador de comando B significa mejor :

agrep -B máscaras de red miarchivo

Uso como verbo

En diciembre de 2003, el Oxford English Dictionary Online añadió "grep" como sustantivo y verbo. [27]

Un uso común del verbo es la frase "No se puede buscar en árboles muertos", lo que significa que es más fácil buscar en 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]

Véase también

Referencias

  1. ^ abc Kernighan, Brian (1984). El entorno de programación Unix . Prentice Hall. pp. 102. ISBN 0-13-937681-X.
  2. ^ “grep fue un comando privado mío durante bastante tiempo antes de que lo hiciera público”. -Ken Thompson Archivado el 26 de mayo de 2015 en Wayback Machine , por Benjamin Rualthanzauva, publicado el 5 de febrero de 2014, Medium
  3. ^ Hauben et al. 1997, cap. 9
  4. ^ Raymond, Eric . "grep". Archivo de jerga . Archivado desde el original el 17 de junio de 2006 . Consultado el 29 de junio de 2006 .
  5. ^ Paul S. Dayan (1992). El gurú del OS-9 - 1: Los hechos . Galactic Industrial Limited. ISBN 0-9519228-0-7.
  6. ^ VCF East 2019: Brian Kernighan entrevista a Ken Thompson (video). YouTube. 6 de mayo de 2019. Archivado desde el original el 11 de diciembre de 2021.(35 minutos)
  7. ^ Computerphile, De dónde surgió GREP , entrevista con Brian Kernighan
  8. ^ "ed regexes". perl.plover.com . Archivado desde el original el 20 de octubre de 2017 . Consultado el 24 de abril de 2018 .
  9. ^ "Cómo Grep obtuvo su nombre". robots.thoughtbot.com . Archivado desde el original el 9 de agosto de 2017 . Consultado el 24 de abril de 2018 .
  10. ^ ab McIlroy, MD (1987). Un lector de Unix para investigación: extractos anotados del Manual del programador, 1971–1986 (PDF) (Informe técnico). CSTR. Bell Labs. 139. Archivado (PDF) desde el original el 11 de noviembre de 2017.
  11. ^ Abou-Assaleh, Tony; Wei Ai (marzo de 2004). Encuesta sobre herramientas de impresión de expresiones regulares globales (GREP) (informe técnico). Universidad de Dalhousie.
  12. ^ Hume, Andrew (1988). "Una historia de dos Greps". Software: práctica y experiencia . 18 (11): 1063. doi :10.1002/spe.4380181105. S2CID  6395770.
  13. ^ Meurant, Gerard (12 de septiembre de 1990). Algoritmos y complejidad. Elsevier Science. pág. 278. ISBN 9780080933917Archivado desde el original el 4 de marzo de 2016 . Consultado el 12 de diciembre de 2015 .
  14. ^ "grep". www.pubs.opengroup.org . The Open Group. Archivado desde el original el 28 de noviembre de 2015 . Consultado el 12 de diciembre de 2015 .
  15. ^ "pgrep(1)". www.linux.die.net . Archivado desde el original el 22 de diciembre de 2015 . Consultado el 12 de diciembre de 2015 .
  16. ^ "grep". www.perldoc.perl.org . Archivado desde el original el 7 de diciembre de 2015 . Consultado el 12 de diciembre de 2015 .
  17. ^ "página del manual de pcregrep". www.pcre.org . Universidad de Cambridge. Archivado desde el original el 23 de diciembre de 2015 . Consultado el 12 de diciembre de 2015 .
  18. ^ "grep(1)". www.linux.die.net . Archivado desde el original el 10 de diciembre de 2015 . Consultado el 12 de diciembre de 2015 .
  19. ^ Spalding, George (2000). Administración de Windows 2000. Biblioteca del profesional de redes. Osborne/McGraw-Hill. pp. 634. ISBN 978-0-07-882582-8. Recuperado el 10 de diciembre de 2010. QGREP.EXE[:] Una herramienta similar a grep en UNIX, esta herramienta se puede utilizar para buscar una cadena de texto.
  20. ^ "Manual del usuario de herramientas MSX-DOS2 de ASCII Corporation". Abril de 1993.
  21. ^ IBM . "Programación Qshell para IBM System i versión 7.2" (PDF) . IBM . Consultado el 5 de septiembre de 2020 .
  22. ^ "Revisión: Adobe InDesign CS3 - CreativePro.com". creativepro.com . 20 de abril de 2007. Archivado desde el original el 5 de enero de 2018 . Consultado el 24 de abril de 2018 .
  23. ^ "Ayuda de InDesign: buscar/cambiar". Archivado desde el original el 28 de agosto de 2016. Consultado el 12 de agosto de 2016 .
  24. ^ "InDesign: Estilos GREP (1) Cómo poner el texto entre paréntesis en cursiva". Archivado desde el original el 24 de septiembre de 2017. Consultado el 5 de enero de 2018 .
  25. ^ "Ayuda de InDesign: estilos GREP". Archivado desde el original el 28 de agosto de 2016. Consultado el 12 de agosto de 2016 .
  26. ^ S. Lee Henry (junio de 1998). "Búsqueda adecuada". Sun Expert . págs. 35–26.
  27. ^ "Lista de palabras nuevas de diciembre de 2003". Diccionario Oxford de inglés . Consultado el 6 de diciembre de 2021 .
  28. ^ Archivo de jerga , artículo "Documentación"
Notas
  • Alain Magloire (agosto de 2000). Grep: en busca de un patrón . Iuniverse Inc. ISBN 0-595-10039-2.
  • Hume, Andrew Grep wars: The strategic search initiative. En Peter Collinson, editor, Proceedings of the EUUG Spring 88 Conference , páginas 237–245, Buntingford, Reino Unido, 1988. Grupo Europeo de Usuarios de UNIX.
  • Michael Hauben y otros (abril de 1997). Netizens: On the History and Impact of Usenet and the Internet (Perspectivas) . Wiley-IEEE Computer Society Press. ISBN 978-0-8186-7706-9.
  • Sitio web oficial de GNU Grep
  • Manual de GNU Grep
  • grep(1) –  Manual del programador de Plan 9 , volumen 1
  • grep(1) –  Manual de comandos generales de Inferno
  • "Por qué GNU grep es rápido": detalles de implementación del autor de GNU grep.
  • Comando Grep – 25 ejemplos prácticos
Obtenido de "https://es.wikipedia.org/w/index.php?title=Grep&oldid=1248360509"