GNU/Linux >> Linux Esercitazione >  >> Linux

Come usare il comando grep in Linux/UNIX

Introduzione

Questa guida descrive in dettaglio i comandi grep più utili per i sistemi Linux / Unix.

Dopo aver esaminato tutti i comandi e gli esempi, imparerai come utilizzare grep per cercare nei file un testo dal terminale.

Prerequisiti

  • Sistema Linux o simile a UNIX
  • Accesso a un terminale/riga di comando
  • Un utente con i permessi per accedere ai file e alle directory desiderati

Cos'è il comando grep?

Grep è un acronimo che sta per G lobale R egular E xpressione P strappare.

Grep è uno strumento da riga di comando Linux/Unix utilizzato per cercare una stringa di caratteri in un file specificato. Il modello di ricerca del testo è chiamato espressione regolare. Quando trova una corrispondenza, stampa la riga con il risultato. Il comando grep è utile durante la ricerca in file di registro di grandi dimensioni.

Utilizzo del comando grep

Il comando grep è composto da tre parti nella sua forma più elementare. La prima parte inizia con grep , seguito dal modello che stai cercando. Dopo la stringa viene il nome del file attraverso il quale grep cerca.

La sintassi del comando grep più semplice è simile alla seguente:

Il comando può contenere molte opzioni, variazioni di pattern e nomi di file. Combina tutte le opzioni necessarie per ottenere i risultati di cui hai bisogno. Di seguito sono riportati i comandi grep più comuni con esempi .

Per cercare un file

Per stampare qualsiasi riga da un file che contiene un modello specifico di caratteri, nel nostro caso phoenix nel file sample2 , esegui il comando:

grep phoenix sample2

Grep visualizzerà ogni riga in cui esiste una corrispondenza per la parola phoenix . Quando si esegue questo comando, non si ottengono corrispondenze esatte. Il terminale invece stampa le righe con le parole che contengono la stringa di caratteri che hai inserito. Ecco un esempio:

Per cercare più file

Per cercare più file con il comando grep, inserisci i nomi dei file che vuoi cercare, separati da uno spazio.

Nel nostro caso, il comando grep in modo che corrisponda alla parola phoenix in tre file sample , sample2 e sample3 assomiglia a questo esempio:

grep phoenix sample sample2 sample3

Il terminale stampa il nome di ogni file che contiene le righe corrispondenti e le righe effettive che includono la stringa di caratteri richiesta.

Puoi aggiungere tutti i nomi di file necessari. Il terminale stampa una nuova riga con il nome del file per ogni corrispondenza trovata nei file elencati.

Cerca in tutti i file nella directory

Per cercare tutti i file nella directory corrente, usa un asterisco invece del nome di un file alla fine di un comando grep.

In questo esempio, utilizziamo nix come criterio di ricerca:

grep nix *

L'output mostra il nome del file con nix e restituisce l'intera riga.

Per trovare solo parole intere

Grep ti consente di trovare e stampare i risultati solo per parole intere. Per cercare la parola fenice in tutti i file nella directory corrente, aggiungi -w al comando grep.

grep -w phoenix *

Questa opzione stampa solo le righe con le corrispondenze di parole intere ei nomi dei file in cui le ha trovate:

Quando -w viene omesso, grep mostra il modello di ricerca anche se è una sottostringa di un'altra parola.

Se desideri cercare più stringhe e pattern di parole, consulta il nostro articolo su come eseguire il grep per più stringhe, pattern o parole.

Per ignorare il caso nelle ricerche Grep

Poiché i comandi grep fanno distinzione tra maiuscole e minuscole, uno degli operatori più utili per le ricerche grep è -i. Invece di stampare solo i risultati in minuscolo, il terminale visualizza i risultati sia in maiuscolo che in minuscolo. L'output include righe con voci di maiuscole e minuscole miste.

Un esempio di questo comando:

grep -i phoenix *

Se utilizziamo l'operatore -i operator per cercare i file nella directory corrente per phoenix , l'output è simile a questo:

Per cercare nelle sottodirectory

Per includere tutte le sottodirectory in una ricerca, aggiungi -r operatore al comando grep.

grep -r phoenix *

Questo comando stampa le corrispondenze per tutti i file nella directory corrente, nelle sottodirectory e nel percorso esatto con il nome del file. Nell'esempio seguente, abbiamo anche aggiunto il -w per mostrare parole intere, ma il modulo di output è lo stesso.

Ricerca grep inversa

Puoi usare grep per stampare tutte le righe che non corrispondono a un modello specifico di caratteri. Per invertire la ricerca, aggiungi -v a un comando grep.

Per escludere tutte le righe che contengono phoenix , inserisci:

grep -v phoenix sample

Il terminale stampa tutte le righe che non contengono la parola utilizzata come criterio di ricerca. Usa -i operator ignorare maiuscolo/minuscolo per escludere completamente la parola utilizzata per questa ricerca:

Per mostrare le righe che corrispondono esattamente a una stringa di ricerca

Il comando grep stampa intere righe quando trova una corrispondenza in un file. Per stampare solo le righe che corrispondono completamente alla stringa di ricerca, aggiungi -x opzione.

grep -x “phoenix number3” *

L'output mostra solo le righe con la corrispondenza esatta. Se sono presenti altre parole o caratteri nella stessa riga, grep non lo include nei risultati della ricerca. Non dimenticare di utilizzare le virgolette ogni volta che è presente uno spazio o un simbolo in un modello di ricerca.

Ecco un confronto dei risultati senza e con il -x operatore nel nostro comando grep:

Elencare i nomi dei file corrispondenti

A volte, devi solo vedere i nomi dei file che contengono una parola o una stringa di caratteri ed escludere le righe effettive. Per stampare solo i nomi di file che corrispondono alla tua ricerca, usa -l operatore:

grep -l phoenix *

L'output mostra i nomi di file esatti che contengono phoenix nella directory corrente ma non stampa le righe con la parola corrispondente:

Come promemoria, utilizza l'operatore di ricerca ricorsivo -r per includere tutte le sottodirectory nella tua ricerca.

Per contare il numero di corrispondenze

Grep può visualizzare i nomi dei file e il conteggio delle righe in cui trova una corrispondenza per la tua parola.

Usa -c operatore per contare il numero di corrispondenze:

grep -c phoenix *

Per visualizzare il numero di righe prima o dopo una stringa di ricerca

A volte hai bisogno di più contenuti nei risultati di ricerca per decidere cosa è più pertinente.

Utilizzare i seguenti operatori per aggiungere le righe desiderate prima, dopo una corrispondenza o entrambe:

  • Usa -A e un numero di righe da visualizzare dopo una corrispondenza:grep -A 3 phoenix sample - questo comando stampa tre righe dopo la corrispondenza.
  • Usa -B e un numero di righe da visualizzare prima di una corrispondenza:grep -B 2 phoenix sample - questo comando stampa due righe prima della corrispondenza.
  • Usa -C e un numero di righe da visualizzare prima di e dopo la partita:grep -C 2 phoenix sample - questo comando stampa due righe prima e dopo la partita.

Per visualizzare i numeri di riga con le corrispondenze grep

Quando grep stampa i risultati con molte corrispondenze, è utile vedere i numeri di riga. Aggiungi -n operatore a qualsiasi comando grep per mostrare i numeri di riga.

Cercheremo Fenice nella directory corrente, mostra due righe prima e dopo le corrispondenze insieme ai rispettivi numeri di riga.

grep -n -C 2 Phoenix sample

Limita l'output di grep a un numero fisso di righe

I singoli file, come i file di registro, possono contenere molte corrispondenze per i modelli di ricerca grep. Limita il numero di righe nell'output di grep aggiungendo -m opzione e un numero al comando.

grep -m2 Phoenix sample

In questo caso, il terminale stampa le prime due corrispondenze che trova nel sample file.

Se non specifichi un file e cerchi tutti i file in una directory, l'output stampa i primi due risultati da ogni file insieme al nome del file che contiene le corrispondenze.


Linux
  1. Come usare il comando Linux grep

  2. Come usare il comando cronologia in Linux

  3. Come utilizzare il comando cronologia di Linux

  4. Come usare il comando Su in Linux

  5. Come utilizzare il comando dello schermo di Linux

Come utilizzare il comando sysctl in Linux

Come utilizzare il comando di arresto di Linux

Come usare grep in Linux

Comando Grep in Linux/UNIX

Trova comando in Linux/UNIX

Uso del comando grep in Linux