Findstr: ricerca tramite espressioni regolari

in IT | Pubblicato il 16/04/2019

A chi non è mai capitato di dover modificare un valore all’interno di un file? credo che sia capitato a molti inoltre, si tratta di un'operazione abbastanza semplice: apro il file e modifico il valore. Ma se il file contiene 10.000 righe? Anche qui, grazie alla funzione cerca di qualsiasi editor di testo risolviamo il problema. Fin qui tutto molto semplice, il problema vero nasce se abbiamo un numero elevato di file e directory e non conosciamo quella corretta.
Per gli utilizzatori di Linux basterebbe utilizzare grep. Grep (general regular expression print) è un comando Unix che consente di fare ricerche all’interno di file attraverso l’uso di espressioni regolari (pattern). Questo comando rende estremamente semplice e potente la ricerca di dati anche in presenza di molti file.
Per chi utilizza Windows?
Per Windows esistono diversi programmi terzi, ma non tutti sono a conoscenza del comando findstr. E’ l’equivalente di grep, il tutto senza scaricare software aggiuntivi, è già integrato dentro Windows!
Vediamo insieme come utilizzarlo.

Il primo passo è aprire il prompt dei comandi. Per farlo WIN + X -> esegui  -> cmd
Proviamo a dire a findstr che deve ricercare la parola password all’interno del file esempio.txt e non deve tener conto delle minuscole o maiuscole:
findstr /i "password" esempio.txt

Terminata la ricerca findstr ci stampa a video la riga, o più righe, che contengono la parola "password".

Altro esempio; ricercare all’interno della cartella e di tutte le sue sottodirectory la parola password
findstr /i /s “password” *

In questi esempi abbiamo analizzato alcuni pattern di ricerca molto semplici, in realtà, grazie ai vari parametri messi a disposizione dal comando findstr è possibile crearne di molto più complessi.  Di seguito la lista dei parametri:

/B         Ricerca l'elemento all'inizio della riga.

/E         Ricerca l'elemento alla fine della riga.

/L         Utilizza le stringhe di ricerca letteralmente.

/R         Utilizza le stringhe di ricerca come espressioni regolari.

/S         Ricerca i file nella directory corrente e in tutte le sottodirectory.

/I         Specifica che la ricerca non deve distinguere tra maiuscole e minuscole.

/X         Stampa le righe esattamente corrispondenti.

/V         Stampa solo le righe che non contengono corrispondenze.

/N         Stampa il numero della riga precedente a quella corrispondente.

/M         Stampa solo il nome file se il file contiene una corrispondenza.

/O         Stampa l'offset carattere prima di ogni riga corrispondente.

/P         Ignora i file con caratteri non stampabili.

Findstr accetta anche i seguenti metacaratteri:

.        Carattere jolly: qualsiasi

*        Ripetere: zero o più occorrenze di carattere o classe precedente

^        Posizione riga: inizio riga

$        Posizione riga: fine riga

[classe]  Classe carattere: qualsiasi carattere dell'insieme

[^classe] Classe inversa: qualsiasi carattere non nell'insieme

[x-y]    Intervallo: qualsiasi carattere nell'intervallo specificato

x       Escape: uso letterale del metacarattere x

  xyz>    Posizione parola: fine  parola

 

 

 

  TAG CLOUD: grep, linux, windows, ricerca, espressioni regolari, findstr