Grep

Grep

Intermedia

Introducción

Has conseguido un trabajo en una biblioteca local, donde ayudas a organizar su colección de libros antiguos. Los estudiantes que la visitan suelen andar buscando citas que recuerdan a medias para citarlas en sus trabajos finales. En lugar de leer manualmente cada libro de principio a fin, decides crear una pequeña herramienta que los escanee en busca de esas citas parciales.

Instrucciones

Busca en los archivos las líneas que coincidan con un string de búsqueda y devuelve todas las líneas que coincidan.

El comando grep de Unix busca en los archivos las líneas que coinciden con una expresión regular. Tu tarea es implementar una versión simplificada del comando grep, que permita buscar strings fijos.

El comando grep recibe tres argumentos:

  1. El string que hay que buscar.
  2. Cero o más banderas para personalizar el comportamiento del comando.
  3. Uno o más archivos en los que buscar.

Después lee el contenido de los archivos indicados (en el orden indicado), encuentra las líneas que contienen el string de búsqueda y, por último, devuelve esas líneas en el orden en que las encontró. Cuando busca en varios archivos, cada línea coincidente va precedida por el nombre del archivo y dos puntos (':').

Banderas

El comando grep admite las siguientes banderas:

  • -n Antepone el número de línea y dos puntos (':') a cada línea de la salida, colocando el número después del nombre del archivo (si lo hay).
  • -l Muestra únicamente los nombres de los archivos que contienen al menos una línea coincidente.
  • -i Compara sin distinguir entre mayúsculas y minúsculas.
  • -v Invierte el programa: recoge todas las líneas que no coincidan.
  • -x Busca únicamente las líneas en las que el string de búsqueda coincide con la línea completa.

Instrucciones específicas de Arturo

A diferencia de la mayoría de los ejercicios de Arturo, el conjunto de pruebas no importará directamente src/grep.art. En su lugar, tu solución se ejecutará como un script de Arturo independiente, que recibe una serie de argumentos de línea de comandos. Puedes usar argarg o argsargs para acceder a estos argumentos de línea de comandos, que contienen cero o más banderas, un patrón de búsqueda y uno o más nombres de archivo. El conjunto de pruebas crea y rellena estos archivos en tiempo de ejecución. Tu solución tendrá que leer el archivo solicitado y escribir la salida esperada en la salida estándar.

Editar en GitHub El enlace se abre en una ventana o una pestaña nuevas
Arturo Exercism

¿Todo listo para empezar Grep?

Regístrate en Exercism para aprender y dominar Arturo con 79 ejercicios y mentoría humana real, todo gratis.