Come cercare dentro un file su Linux

Per trovare qualcosa nel contenuto di un file sul sistema operativo Linux, utilizzo il comando grep.

grep [pattern] [file]

Il pattern è la parola da cercare ( keyword o keyphrase ) mentre il secondo parametro è il nome del file dove cercarla.

Il comando restituisce in output le righe del file dove avviene il matching, le linee che contengono la parola ricercata.

I parametri del comando grep

I principali parametri del comando grep sono i seguenti:

  • grep -v. Questo parametro trova le corrispondenze inverse, ossia tutte le linee che non contengono il pattern.
  • grep -i. Questo parametro effettua una ricerca case insensitive, ignorando la differenza tra maiuscole e minuscole.
  • grep -c. Questo parametro restituisce il numero delle corrispondenze trovate nel file.
  • grep -n. Questo parametro aggiunge in output anche il numero della riga del file dove trova le corrisponenze.

Nota. I parametri possono essere abbinati tra loro. Ad esempio, per avere il numero complessivo (-c) delle corrispondenze di una ricerca case insensitive (-i) aggiungo il parametro grep -ci.

Come cercare in un file di testo

Per cercare in un file di testo, basta eseguire il comando nella forma base.

grep [pattern] [file]

Un esempio pratico

Il file di testo prova2.txt contiene i nomi di alcune città italiane.

Voglio verificare se contiene la parola "Milano".

Quindi, digito sulla linea dei comandi:

un esempio pratico di utilizzo del comando grep

Il comando restituisce i record del file che contengono la parola. Quindi, il file contiene la parola "Milano".

Nota. Si è trattato di una ricerca case sensitive. Il comando grep ha distinto le lettere maiuscole dalle minuscole. Se avessi cercato la parola "milano" (in minuscolo) non avrebbe trovato nessuna corrispondenza. Per fare ricerca case insensitive avrei dovuto scrivere grep -i milano prova2.txt.

Esempio 2

Per trovare il numero delle occorrenze trovate nel file di testo, apro il terminale e scrivo il seguente comando:

un esempio del comando grep -c

Il comando grep restituisce il totale delle corrispondenze trovate nel file ossia una.

Esempio 3

Per cercare tutti i record che non contengono la parola "Milano", scrivo il comando nella seguente forma:

un esempio pratico di comando grep -v

Il comando grep -v restituisce le linee del file che non contengono "Milano".

Esempio 4

Per sapere anche il numero di record in cui si trova la corrispondenza, digito il seguente comando:

un esempio di grep -v

Il comando grep -n visualizza in output il numero della linea del file dove trova le corrispondenze.

Come cercare nei file binari

Il comando grep consente di cercare le corrispondenze anche nei file binari.

Tuttavia, in questo caso il comando non restituisce la linea, ma soltanto l'informazione se ha trovato corrispondenze oppure no.

Per visualizzare anche le linee, va abbinato al comando strings.

strings [nomefile] | grep [pattern]

In questo modo si ottiene la concatenazione di due comandi.

Nota. Il simbolo pipe (|) significa che l'output del primo comando (strings), quello che precede la barra verticale, entra come input nel secondo comando (grep).


 
Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin
knowledge base

Libri di approfondimento

I file su Linux