stringtranslate.com

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 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]

Historia

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] grepgrep

Implementaciones

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 de 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 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 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 normalmente recibe nombre filtero whereestá en otros idiomas.

El pcregrepcomando es una implementación grepque utiliza la sintaxis de expresión regular de Perl . [17] Se puede invocar una funcionalidad similar en la versión GNU grepcon la -Pbandera. [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 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".

estar 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 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

Uso como verbo

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]

Ver también

Referencias

  1. ^ abc Kernighan, Brian (1984). El entorno de programación Unix . Prentice Hall. págs.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, 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). El gurú de OS-9 - 1: los hechos . Galáctica Industrial Limitada. ISBN 0-9519228-0-7.
  6. ^ VCF East 2019: Brian Kernighan entrevista a Ken Thompson (vídeo). YouTube. 6 de mayo de 2019. Archivado desde el original el 11 de diciembre de 2021.(35 minutos)
  7. ^ Computerphile, de dónde vino GREP , entrevista con Brian Kernighan
  8. ^ "ed expresiones regulares". perl.plover.com . Archivado desde el original el 20 de octubre de 2017 . Consultado el 24 de abril de 2018 .
  9. ^ "Cómo obtuvo Grep su nombre". robots.thinkbot.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 Research Unix: extractos comentados del Manual del programador, 1971-1986 (PDF) (Informe técnico). CSTR. Laboratorios Bell. 139. Archivado (PDF) desde el original el 11 de noviembre de 2017.
  11. ^ Abou-Assaleh, Tony; Wei Ai (marzo de 2004). Encuesta sobre herramientas globales de impresión de expresiones regulares (GREP) (informe técnico). Universidad de Dalhousie.
  12. ^ Hume, Andrés (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. Ciencia 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 del profesional 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 del usuario de herramientas MSX-DOS2 de ASCII Corporation". Abril de 1993.
  21. ^ IBM . "Qshell de programación de 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) Configuración de 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". Experto en sol . págs. 35-26.
  27. ^ "Lista de nuevas palabras de diciembre de 2003". Diccionario de inglés Oxford . Consultado el 6 de diciembre de 2021 .
  28. ^ Archivo de jerga , artículo "Documentación"
Notas

Enlaces externos