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.

Il track Powershell

I flag cambiano nome

Powershell supporta i parametri switch per le funzioni, che si comportano in modo simile ai flag della riga di comando.

Per rispettare la consuetudine di Powershell di dare nomi dettagliati e verbosi ai cmdlet e alle loro proprietà, anche i flag usati in questo esercizio sono stati rinominati per riflettere il linguaggio.

  • Line (-n): antepone il numero di riga e i due punti (':') a ogni riga dell'output, inserendo il numero dopo il nome del file (se presente).
  • File (-l): mostra in output solo i nomi dei file che contengono almeno una riga corrispondente.
  • Insensitive (-i): cerca usando un confronto che non distingue maiuscole e minuscole.
  • Invert (-v): inverte il programma, raccogliendo tutte le righe che non corrispondono.
  • Whole (-x): cerca solo le righe in cui la stringa di ricerca corrisponde all'intera riga.

Gestione dei file

Concentrati soprattutto sull'implementare la funzione grep, senza preoccuparti di ottenere correttamente il percorso dei file.

Questo esercizio fornirà 3 file di testo richiesti: iliad.txt, midsummer-night.txt e paradise-lost.txt nella suite di test; puoi semplicemente accedere al loro contenuto con Get-Content usando la stringa del nome invece del solito percorso di file.

Cmdlet

Powershell ha effettivamente un cmdlet simile a grep chiamato Select-String, e se ti interessa puoi leggere di più qui. In questo esercizio non devi usare Select-String in nessun momento.

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

Vuoi iniziare Grep?

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