Grep

Grep

Medio

Introduzione

Hai trovato lavoro in una biblioteca locale, dove aiuti a organizzare la collezione di libri antichi. Gli studenti che la frequentano sono spesso a caccia di citazioni ricordate a metà, da inserire nelle loro tesine. Invece di leggere a mano ogni libro da cima a fondo, decidi di costruire un piccolo strumento che li analizzi, cercando proprio queste citazioni parziali.

Istruzioni

Cerca nei file le righe che corrispondono a una stringa di ricerca e restituisci tutte le righe corrispondenti.

Il comando Unix grep cerca nei file le righe che corrispondono a un'espressione regolare. Il tuo compito è implementare una versione semplificata del comando grep, che supporta la ricerca di stringhe fisse.

Il comando grep accetta tre argomenti:

  1. La stringa da cercare.
  2. Zero o più flag per personalizzare il comportamento del comando.
  3. Uno o più file in cui cercare.

Poi legge il contenuto dei file specificati (nell'ordine indicato), trova le righe che contengono la stringa di ricerca e infine restituisce quelle righe nell'ordine in cui sono state trovate. Quando cerca in più file, ogni riga corrispondente è preceduta dal nome del file e dai due punti (':').

Flag

Il comando grep supporta i seguenti flag:

  • -n Anteponi il numero di riga e i due punti (':') a ogni riga dell'output, mettendo il numero dopo il nome del file (se presente).
  • -l Restituisci solo i nomi dei file che contengono almeno una riga corrispondente.
  • -i Confronta ignorando la differenza tra maiuscole e minuscole.
  • -v Inverti il programma: raccogli tutte le righe che non corrispondono.
  • -x Cerca solo le righe in cui la stringa di ricerca corrisponde all'intera riga.

Istruzioni specifiche per Arturo

A differenza della maggior parte degli esercizi di Arturo, la suite di test non importerà direttamente src/grep.art. La soluzione verrà invece eseguita come script Arturo autonomo, ricevendo una serie di argomenti dalla riga di comando. Puoi usare argarg o argsargs per accedere a questi argomenti della riga di comando, che contengono zero o più flag, un pattern di ricerca e uno o più nomi di file. Questi file vengono creati e popolati dalla suite di test in fase di esecuzione. La soluzione dovrà leggere il file richiesto e scrivere l'output previsto sullo standard output.

Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
Arturo Exercism

Vuoi iniziare Grep?

Iscriviti a Exercism per imparare e padroneggiare Arturo con 79 esercizi e il mentoring di persone reali, tutto gratis.