Ricerca nel sito web

Utilizzo di grep su file che corrispondono a criteri specifici


Il comando Grep (stampa espressione regolare globale) corrisponde e cerca il modello specifico nelle espressioni regolari. Questo comando filtra e cerca un particolare modello di caratteri e li visualizza come output. È considerato uno dei comandi più utili su sistemi simili a Unix/Linux per amministratori di sistema e sviluppatori.

Linux contiene vari tipi di comandi e utilità per semplificare ogni attività. A differenza di altri sistemi operativi, trovare qualsiasi file in Linux è semplice perché puoi utilizzare il comando grep per cercare qualsiasi file.

Puoi utilizzare il comando grep per visualizzare il nome del file specifico che contiene un modello particolare che stai cercando. Tuttavia, ci sono alcune cose che dovresti seguire mentre usi il comando grep in Linux −

  • Grep è un comando con distinzione tra maiuscole e minuscole per impostazione predefinita. ,Ecco perché è necessario utilizzare l'opzione -i per far corrispondere il modello senza distinzione tra maiuscole e minuscole.

  • È necessario utilizzare le virgolette nel comando grep per cercare un carattere con un significato speciale per la shell.

  • Il comando Grep visualizza l'intera riga che contiene il carattere specifico. Quindi devi usare l'opzione -o solo per visualizzare il nome del file e il carattere cercato.

In questa breve guida utilizzeremo un grep sui file che corrispondono a criteri specifici su Linux.

Utilizzo di Grep su file che corrispondono a criteri specifici su Linux

Il comando grep è preinstallato nella maggior parte delle distribuzioni Linux. Creiamo alcuni file di esempio nella directory "Documenti" e cerchiamo una stringa o un'espressione regolare in tali file.

~$: sudo tree Documents 
Documents
|__ sample1
|__ sample2
|__ sample3

0 directories, 3 files

Ora cercheremo questi file di esempio attraverso le diverse opzioni del comando grep in Linux.

Corrispondenza della ricerca con distinzione tra maiuscole e minuscole sui file

Rientra nella ricerca con distinzione tra maiuscole e minuscole se devi trovare parole e schemi esatti utilizzando grep sui file.

grep <pattern> <filename1> <filename2>.....

Qui cercheremo la parola "unix" tra tutti i file nella directory Documenti.

Per questo, usa il comando seguente −

~$: grep unix sample1 sample2 sample3
sample1:unix
sample3:unix operating system

Il comando precedente corrisponde al modello menzionato e visualizza i file contenenti "unix".

Corrispondenza della ricerca senza distinzione tra maiuscole e minuscole sui file

Puoi cercare qualsiasi modello in modo insensibile usando l'opzione -i con il comando precedente −

grep -i <pattern> <filename1> <filename2>.....

Visualizziamo tutti i risultati relativi a "unix", ma il terminale mostrerà tutti i file contenenti "Unix" o "unix".

~$: grep -i "unix" sample1 sample2 sample3
sample1:unix
sample1:Unix
sample2:Unix
sample3:unix operating system

Ricerca solo del modello corrispondente

Per impostazione predefinita, il comando grep visualizza l'intero paragrafo o riga. Puoi mostrare solo il modello anziché l'intero passaggio o riga utilizzando l'opzione -o con il comando grep.

grep -o "<pattern>" <filename>

Qui cercheremo "Linux" tramite il comando grep e la sua opzione -o −

~$: grep -o "Linux" sample1 sample3
sample1:Linux

Ricerca dei nomi di file che corrispondono al modello

Se vuoi cercare file contenenti un modello o una stringa specifici, usa il seguente comando −

grep -l "<pattern>" <filename1> <filename2>.....

O,

grep -l "<pattern>" *

Ad esempio, il comando seguente mostrerà il nome del file nella directory corrente contenente la parola "linux" -

~$: grep -l "linux" *
sample1
sample3

Corrispondenza con qualsiasi modello

Utilizzare il seguente comando grep per visualizzare caratteri specifici che corrispondono a qualsiasi parola, modello, ecc. nei file.

grep "..<letter_pattern>" <filename>

Qui, il comando seguente mostra entrambi i modelli "Linux" e "Unix", che termina con "x".

~$: grep "..x" sample1 sample3
sample2:Linux
sample2:Linux
sample2:Unix
sample3:linux
sample3:unix operating system.

Corrispondenza del modello invertito

Puoi abbinare solo le linee che non sono simili al modello menzionato. In questo caso, puoi utilizzare l'opzione -v con il comando grep come segue −

grep -v "<pattern>" <filename>

Ad esempio, cercheremo quei file che non contengono la parola "Linux".

~$: grep -v "Linux" sample1 sample2 sample3
sample1:GNU operating system
sample1:gnu
sample1:Gnu
sample:unix
sample1:linux
sample1:unix
sample2:GNU
sample2:unix
sample3:linux
sample3:unix operating system.
sample3:gnu operating system.

Corrispondenza del modello che inizia con una parola/stringa specifica

Il modello di espressione regolare '^' definisce l'inizio di un passaggio o di una riga. Utilizzando il seguente comando grep, puoi visualizzare le righe che iniziano con un modello o una stringa specifica.

grep "^<pattern>" <filename>

Nel comando seguente utilizzeremo il comando grep per cercare "gnu" nei file −

~$: grep "^gnu" sample2 sample3
sample3:gnu operating system.

Corrispondenza del modello che termina con una parola/stringa specifica

Il modello di espressione regolare '$' definisce la fine di un passaggio/riga. Usando questa espressione con il comando grep, puoi abbinare le righe o i passaggi che terminano con il modello/parola menzionato.

grep "<pattern>$" <filename>

Ad esempio, cercheremo "system" in più file −

~$: grep "system$" sample1 sample2 sample3
sample3:unix operating system.
sample3:gnu operating system.

Corrispondenza ricorsiva per un modello nella directory

Se vuoi far corrispondere un modello all'interno dell'intera directory anziché file specifici nella directory, puoi utilizzare l'opzione -R con il comando grep come questo:

grep -R <pattern> <directory>

Ora eseguiremo il comando grep in modo ricorsivo per trovare i file contenenti "GNU" nella directory Documenti −

~$: grep -R GNU Documents
Documents/sample2:GNU
Documents/sample1:GNU operating system

Suggerimento bonus − Se vuoi far corrispondere un modello specifico tra tutti i file presenti nella directory corrente, puoi farlo utilizzando l'opzione -w con il comando grep come segue −

grep -w <pattern> *

Corrispondenza di file con estensioni specifiche

Utilizzare il comando seguente per cercare un modello nei file con un'estensione specifica inclusi in una directory

grep -R --include=*.<file_extention> '<pattern>' <directory>

Nell'esempio seguente, il comando grep controlla il modello menzionato solo nei file con estensione ".txt".

~$: grep -R --include=*.txt 'Linux' Documents
Documents/sample1.txt:Linux is a kernel

Nota - Puoi anche utilizzare il comando precedente per abbinare modelli in file con più estensioni contemporaneamente.

Conclusione

Il comando grep è un ottimo modo per filtrare file con modelli specifici tramite il terminale in Linux. In questa guida, abbiamo spiegato come soddisfare criteri specifici nei file attraverso vari esempi. Usare il comando grep è molto semplice e puoi vederlo anche attraverso alcuni degli esempi sopra. In questo modo puoi utilizzare il comando grep per cercare qualsiasi modello, riga, parola, ecc. in Linux in pochi clic.

Articoli correlati: