Origen de grep

Grep_Linux.jpg

Aunque he categorizado esta entrada como Microhistoria, no la he titulado como tal, porque es más bien una pequeña curiosidad, sería más bien una mini-microhistoria :)

A finales de los 60s y principios de los 70s, el mundo de la informática vería nacer uno de los sistemas operativos con más influencia de la historia: Unix.

Cuando uno creaba un sistema operativo, además del núcleo necesitaba algunas utilidades con las que poder trabajar y seguir desarrollando en el mismo. Algunas de las herramientas esenciales eran un ensamblador, depurador, un editor de texto, etc. El papel que jugaba el editor de texto era importantísimo, ya que este era el medio por el que el programador podía escribir código directamente en el sistema.

En Unix el editor de texto que Ken Thompson se creó lo llamó ed. Posiblemente tu nunca hayas usado este editor, pero si dispones de un sistema Linux posiblemente lo tengas instalado. Los que lo hayan usado, sabrán que cuando abres un fichero con este edito, éste no te muestra el contenido del mismo, tienes que, a base de comandos, decirle que te muestre el contenido que quieres ver.

Este editor también tiene una opción de búsqueda, que se ejecuta con la barra inclinada /. Por ejemplo si quieres buscar la palabra hola, lo harías con /hola, y esto te mostraría la siguiente instancia de hola. Si lo que quieres es que te muestre todas las instancias de la palabra hola y no sólo la siguiente, eso se consigue con el prefijo g. Con lo que siguiendo nuestro ejemplo, tendríamos que escribir: g/hola. Una vez que ed encontraba nuestra búsqueda, si queríamos que nos imprimiera el resultado le teníamos que añadir al final otro comando (print) /p. Por lo que nuestro comando sería: g/hola/p. Pero ed no sólo era capaz de buscar cadenas de texto exactas, sino que nos permitía usar expresiones regulares, por lo que para buscar un texto de forma global, usando una expresión regular y que ed nos imprima el resultado, el formato sería: g/regular expression/p o g/re/p. Como el buscar ciertas cadenas de texto en ficheros de texto era una tarea muy común, Ken Thompson acabaría creando un utilidad específica para esta tarea y la llamó: grep.

PD: He hecho algunas pruebas con ed en mi sistema (Linux Mint) y ya no hace falta usar el /p para que se imprima el resultado de búsqueda, supongo que esto ocurría en sus primeras versiones.

Fuente