De Wikipedia, la enciclopedia libre
Saltar a navegación Saltar a búsqueda

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]

Historia [ editar ]

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 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 imprimiría todas las líneas que coincidan con un patrón específico. [8] [9] se incluyó por primera vez en la versión 4 de Unix . Declarando 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]

Uso de muestra [ editar ]

El siguiente ejemplo demuestra la salida del grepcomando con diferentes argumentos

$ grep root / etc / passwd root: x: 0: 0: root: / root: / bin / bash operator: x: 11: 0: operator: / root: / sbin / nologin$ grep -n root / etc / passwd 1: root: x: 0: 0: root: / root: / bin / bash 12: operador: x: 11: 0: operador: / root: / sbin / nologin$ grep -c falso / etc / passwd 7

Implementaciones [ editar ]

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.

El pcregrepcomando es una implementación de grepque usa la sintaxis de expresiones regulares de Perl . [17] Se puede invocar una funcionalidad similar en la versión GNU de grepwith the -Pflag. [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 qgrepo findstr. [19]

Un grepcomando es también parte de ASCII 's Herramientas MSX-DOS2 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 ".

agrep [ editar ]

un grep ( grep aproximado) coincide incluso cuando el texto solo seajusta aproximadamente al patrón de búsqueda. [26]

La siguiente invocación busca 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 netmasks myfile

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 netmasks myfile

Uso como verbo [ editar ]

En diciembre de 2003, el Oxford English Dictionary Online añadió borradores de entradas para "grep" como sustantivo y verbo.

Un uso común del verbo es la frase "No se pueden capturar árboles muertos", lo que significa que uno puede buscar más fácilmente a través de medios digitales, utilizando herramientas como grep, por ejemplo , que con una copia impresa (es decir, una hecha de árboles muertos, papel). . [27] Compare con google .

Ver también [ editar ]

  • Algoritmo de búsqueda de cadenas de Boyer-Moore
  • agrep , un comando aproximado de coincidencia de cadenas
  • find (Windows) , un comando de DOS y Windows que realiza búsquedas de texto, similar a un simplegrep
  • find (Unix) , un comando de Unix que busca archivos por atributo, muy diferente degrep
  • Lista de comandos de Unix
  • vgrep o "visual grep"
  • The Platinum Searcher , una búsqueda más rápida

Referencias [ editar ]

  1. ↑ a b c 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 la Wayback Machine , Por Benjamin Rualthanzauva, Publicado el 5 de febrero de 2014, Medio
  3. ^ Hauben y col. 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). The OS-9 Guru - 1: Los hechos . Galáctica Industrial Limited. ISBN 0-9519228-0-7.
  6. ^ VCF East 2019 - Brian Kernighan entrevista a Ken Thompson (video). YouTube. 6 de mayo de 2019. (35 minutos)
  7. ^ Computerphile, de dónde vino 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. ↑ a b McIlroy, MD (1987). Un lector de investigación Unix: extractos comentados del Manual del programador, 1971–1986 (PDF) (Informe técnico). CSTR. Bell Labs. 139. Archivado (PDF) desde el original el 11/11/2017.
  11. ^ Abou-Assaleh, Tony; Wei Ai (marzo de 2004). Estudio de herramientas de impresión global de expresiones regulares (GREP) (informe técnico). Universidad de Dalhousie.
  12. ^ Hume, Andrew (1988). "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 . Ciencia de Elsevier. pag. 278. ISBN 9780080933917. Archivado desde el original el 4 de marzo de 2016 . Consultado el 12 de diciembre de 2015 .
  14. ^ "grep" . www.pubs.opengroup.org . El grupo abierto. 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 de 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 de profesionales de la red. Osborne / McGraw-Hill. págs.  634 . ISBN 978-0-07-882582-8. Consultado 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 de usuario de herramientas MSX-DOS2 de ASCII Corporation
  21. ^ IBM . "IBM System i Versión 7.2 Programación Qshell" (PDF) . 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. ^ "Copia archivada" . Archivado desde el original el 24 de septiembre de 2017 . Consultado el 5 de enero de 2018 .Mantenimiento de CS1: copia archivada como título ( enlace )
  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". Experto en sol . págs. 35–26.
  27. ^ Archivo de jerga , artículo "Documentación"
Notas
  • Alain Magloire (agosto de 2000). Grep: Buscando un patrón . ISBN de Iuniverse Inc. 0-595-10039-2.
  • Hume, Andrew Grep wars: La iniciativa de búsqueda estratégica. En Peter Collinson, editor, Proceedings of the EUUG Spring 88 Conference , páginas 237–245, Buntingford, Reino Unido, 1988. European UNIX User Group.
  • Michael Hauben ; et al. (Abril de 1997). Internautas: sobre la historia y el impacto de Usenet e Internet (perspectivas) . Prensa de la Sociedad de Computación Wiley-IEEE. ISBN 978-0-8186-7706-9.

Enlaces externos [ editar ]

  • 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.
  • Network grep : un analizador de paquetes que se utiliza para hacer coincidir patrones en la capa de red
  • Command Grep - 25 ejemplos prácticos