Articulo de referencia

grep

{{cite book|last=Kernighan|first=Brian|title=The Unix Programming Environment|year=1984|publisher=Prentice Hall|isbn=0-13-937681-X|pages=[https://archive.org/details/unixprogram...

grep is a command-line utility for searching text for lines that match a regular expression. Its name comes from the ed command g/re/p (global, regular expression, print), which has the same effect.[3][4] grep was originally developed for the Unix operating system, and is commonly available on Unix-like and some other systems such as OS-9.[5] The shellcommand that runs the utility has the same name: grep.

History

Before it was named, grep was a private utility written by Ken Thompson to search files for certain patterns. Doug McIlroy, unaware of its existence, asked Thompson to write such a program. Responding that he would think about such a utility overnight, Thompson actually corrected bugs and made improvements for about an hour on his own program called s (short for "search"). The next day he presented the program to McIlroy, who said it was exactly what he wanted. Thompson's account may explain the belief that grep was written overnight.[6]

Thompson escribió la primera versión en lenguaje ensamblador PDP-11 para ayudar a Lee E. McMahon a analizar el texto de los Papeles Federalistas y determinar la autoría de cada uno. [ 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 todo el archivo en la memoria para permitir la edición de acceso aleatorio . Por lo tanto, Thompson extrajo ese código de expresiones regulares 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 , donde es la expresión regular a coincidir, imprimiría todas las líneas que presentaran una coincidencia de patrón específica. [ 8 ] [ 9 ] grep se incluyó por primera vez en la versión 4 de Unix . Afirmando que se "generalmente se cita como la herramienta de software prototípica", McIlroy atribuyó a grep el haber "inculcado irrevocablemente" la filosofía de herramientas de Thompson en Unix. [ 10 ]g/re/pre

Implementaciones

Existen diversas implementaciones de grep en muchos sistemas operativos y entornos de desarrollo de software. [ 11 ] Las primeras variantes incluían egrepy fgrep, introducidas en la versión 7 de Unix . [ 10 ] La egrepvariante admite una sintaxis de expresiones regulares extendida añadida por Alfred Aho después de la implementación original de expresiones regulares de Ken Thompson . [ 12 ] La fgrepvariante busca cualquiera de una lista de cadenas fijas utilizando el algoritmo de coincidencia de cadenas de Aho-Corasick . [ 13 ] Existen binarios de estas variantes en sistemas modernos, que generalmente se enlazan con grep o llaman a grep como un script de shell con la bandera apropiada añadida, por ejemplo . Los comandos y , aunque se implementan comúnmente en sistemas POSIX , hasta el punto de que la especificación POSIX menciona su existencia generalizada, en realidad no forman parte de POSIX. [ 14 ]execgrep-E"$@"egrepfgrep

Otros comandos contienen la palabra "grep" para indicar que son herramientas de búsqueda, generalmente 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 Perlgrep , es una función integrada que encuentra elementos en una lista que satisfacen una determinada propiedad. [ 16 ] Esta función de orden superior se denomina normalmente filtero whereen otros lenguajes.

El pcregrepcomando es una implementación de grep que utiliza la sintaxis de expresiones regulares de Perl . [ 17 ] Se puede invocar una funcionalidad similar en la versión GNU de grep con la -Pbandera. [ 18 ]

Las versiones de grep (dentro de Cygwin y GnuWin32 , por ejemplo) también se ejecutan en Microsoft Windows . Algunas versiones de Windows incluyen el comando similar qgrepo . [ 19 ]findstr

El comando grep también forma parte de las herramientas MSX-DOS2 de ASCII para MSX-DOS versión 2. [ 20 ]

Los comandos grep, egrep, y fgreptambié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".

agrep

agrep(aproximate grep) es un programa de coincidencia aproximada de cadenas de código abierto , desarrollado por Udi Manber y Sun Wu entre 1988 y 1991, [ 26 ] para su uso con Unix . Fue portado a OS/2 , MS-DOS y Windows .

Un grep encuentra coincidencias incluso cuando el texto se ajusta aproximadamente al patrón de búsqueda. [ 27 ]

Esta siguiente invocación encuentra netmasksen el archivo myfile, pero también cualquier otra palabra que se pueda derivar de él, con no más de dos sustituciones.

agrep -2 netmasks myfile

Este ejemplo genera una lista de coincidencias con las más cercanas, es decir, aquellas con menos sustituciones, listadas primero. El indicador de comando -Bsignifica "mejor":

agrep -B netmasks myfile

Uso como verbo

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

Un uso común del verbo es la frase "No se puede buscar en árboles muertos", lo que significa que se puede buscar más fácilmente en medios digitales, utilizando herramientas como grep, que en una copia impresa (es decir, una hecha de "árboles muertos", que en este contexto es un disfemismo para el papel). [ 29 ]

Véase también

Referencias

  1. 1 2 3 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 hacerlo público.” -Ken Thompson Archivado el 26/05/2015 en Wayback Machine , por Benjamin Rualthanzauva, publicado el 5 de febrero de 2014, Medium
  3. Hauben, Michael ; Hauben, Ronda (1997). «Sobre la historia temprana y el impacto de las herramientas Unix para construir las herramientas para un nuevo milenio». Netizens: On the History and Impact of Usenet and the Internet . Los Alamitos, California: IEEE Computer Society Press. ISBN 978-0-8186-7706-9pág.  136: Una tarde le pregunté a Ken Thompson si podía extraer el reconocedor de expresiones regulares del editor y crear un programa de una sola pasada para hacerlo. Dijo que sí. A la mañana siguiente encontré una nota en mi correo anunciando un programa llamado grep. Funcionó de maravilla. Cuando le pregunté qué significaba ese nombre tan peculiar, Ken dijo que era obvio. Significaba el comando del editor que simulaba, g/re/p (impresión global de expresiones regulares).
  4. Raymond, Eric . "grep" . Archivo de jerga . Archivado del original el 17-06-2006 . Recuperado el 29-06-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 del original el 11 de diciembre de 2021.(35 minutos)
  7. Computerphile, De dónde surgió GREP ( Archivado el 11/11/2018 en Wayback Machine) , entrevista con Brian Kernighan
  8. "ed regexes" . perl.plover.com . Archivado del original el 20 de octubre de 2017. Recuperado el 24 de abril de 2018 .
  9. "Cómo Grep obtuvo su nombre" . robots.thoughtbot.com . Archivado del original el 9 de agosto de 2017. Consultado el 24 de abril de 2018 .
  10. 1 2 McIlroy, MD (1987). Un lector de Research Unix: extractos anotados del Manual del programador, 1971–1986 (PDF) (Informe técnico). CSTR. Bell Labs. 139. Archivado (PDF) del original el 11/11/2017.
  11. Abou-Assaleh, Tony; Wei Ai (marzo de 2004). Estudio de herramientas globales de impresión de expresiones regulares (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 del original el 4 de marzo de 2016. Consultado el 12 de diciembre de 2015 .
  14. "grep" . www.pubs.opengroup.org . The Open Group. Archivado del original el 28 de noviembre de 2015. Consultado el 12 de diciembre de 2015 .
  15. "pgrep(1)" . www.linux.die.net . Archivado del original el 22 de diciembre de 2015 . Recuperado el 12 de diciembre de 2015 .
  16. "grep" . www.perldoc.perl.org . Archivado del original el 7 de diciembre de 2015. Consultado el 12 de diciembre de 2015 .
  17. "página man de pcregrep" . www.pcre.org . Universidad de Cambridge. Archivado del original el 23 de diciembre de 2015. Consultado el 12 de diciembre de 2015 .
  18. "grep(1)". www.linux.die.net. Archived from the original on 10 December 2015. Retrieved 12 December 2015.
  19. Spalding, George (2000). Windows 2000 administration. Network professional's library. Osborne/McGraw-Hill. pp. 634. ISBN 978-0-07-882582-8. Retrieved 2010-12-10. QGREP.EXE[:] A similar tool to grep in UNIX, this tool can be used to search for a text string
  20. "MSX-DOS2 Tools User's Manual by ASCII Corporation". April 1993.
  21. IBM. "IBM System i Version 7.2 Programming Qshell"(PDF). IBM. Archived(PDF) from the original on 2020-09-18. Retrieved 2020-09-05.
  22. "Review: Adobe InDesign CS3 - CreativePro.com". creativepro.com. 20 April 2007. Archived from the original on 5 January 2018. Retrieved 24 April 2018.
  23. "InDesign Help: find/change". Archived from the original on 2016-08-28. Retrieved 2016-08-12.
  24. "InDesign: GREP Styles (1) Setting text between parentheses in Italic". Archived from the original on 2017-09-24. Retrieved 2018-01-05.
  25. "InDesign Help: GREP styles". Archived from the original on 2016-08-28. Retrieved 2016-08-12.
  26. Wu, Sun; Manber, Udi (20–24 January 1992). Agrep -- a fast approximate pattern-matching tool. 1992 Winter USENIX Conference. San Francisco, California. CiteSeerX 10.1.1.89.5424.
  27. S. Lee Henry (June 1998). "Proper Searching". Sun Expert. pp. 35–26.
  28. "New words list December 2003". Oxford English Dictionary. Archived from the original on 2023-07-24. Retrieved 2021-12-06.
  29. Jargon File, article "Documentation"
Notes
  • Alain Magloire (August 2000). Grep: Searching for a Pattern. Iuniverse Inc. ISBN 0-595-10039-2.
  • Hume, Andrew (1988). Collinson, Peter (ed.). «Guerras de Grep: La iniciativa de búsqueda estratégica». Actas de la Conferencia EUUG Primavera 88. Buntingford, Reino Unido: Grupo Europeo de Usuarios de UNIX: 237–245 .
  • 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