GNU/Linux >> Linux Esercitazione >  >> Linux

Come Grep per più stringhe, pattern o parole

Introduzione

Grep è una potente utility disponibile per impostazione predefinita sui sistemi basati su UNIX. Il nome sta per Global Regular Expression Print.

Usando il grep comando, è possibile personalizzare il modo in cui lo strumento ricerca un motivo o più motivi in ​​questo caso. È possibile eseguire il grep di più stringhe in file e directory diversi. Lo strumento stampa tutte le righe che contengono le parole specificate come modello di ricerca.

In questa guida, ti mostreremo come utilizzare grep per cercare più parole o schemi di stringhe . Segui gli esempi in questo tutorial per imparare a utilizzare grep nel modo più efficace.

Prerequisiti

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

Come eseguire il Grep di più pattern – Sintassi

La sintassi di base di grep durante la ricerca di più pattern in un file include l'utilizzo di grep comando seguito da stringhe e dal nome del file o dal suo percorso.

I modelli devono essere racchiusi tra virgolette singole e separati dal simbolo della barra verticale. Usa la barra rovesciata prima del pipe | per le espressioni regolari.

grep 'pattern1\|pattern2' fileName_or_filePath

L'ultimo modo per usare grep è con -E opzione. Questa opzione tratta il modello utilizzato come un'espressione regolare estesa .

grep -E 'pattern1|pattern2' fileName_or_filePath

La versione obsoleta di grep esteso è egrep .

egrep 'pattern1|pattern2' fileName_or_filePath

Un'altra opzione consiste nell'aggiungere più pattern separati a grep comando.

Per farlo, usa il -e contrassegnare e continuare ad aggiungere il numero desiderato di modelli di ricerca:

grep -e pattern1 -e pattern2 fileName_or_filePath

Qual ​​è la differenza tra grep, grep -E ed egrep?

Il egrep comando è una versione obsoleta di grep esteso. Svolge la stessa funzione di grep -E .

La differenza tra grep e grep esteso è che grep esteso include meta caratteri che sono stati aggiunti in seguito.

Questi caratteri sono la parentesi () , parentesi graffe {} e punto interrogativo . Il carattere pipe | viene anche trattato come un metacarattere in grep esteso.

Esempi di utilizzo di Grep per più stringhe, pattern e parole

Per essere sicuro di capire come utilizzare grep per cercare più stringhe, ti suggeriamo di creare un file con del testo su cui proveremo un paio di casi d'uso diversi.

Nel nostro caso, abbiamo chiamato il file sample.txt e aggiunto alcuni paragrafi di testo. Abbiamo archiviato il file nella directory del test utente, ovvero in /home/test/sample.txt

Come greppare più pattern in un file

Negli esempi seguenti, useremo grep invece di grep esteso. Non dimenticare di usare la barra rovesciata prima del carattere pipe .

Poiché grep non supporta il simbolo pipe come operatore di alternanza, è necessario utilizzare il carattere di escape (barra rovesciata \) per dire a grep comando per trattare la tubazione in modo diverso.

Ad esempio, per cercare le parole extra e valore nel sample.txt file usa questo comando:

grep 'extra\|value' sample.txt

L'output evidenzia la stringa che volevi grep.

Se lo stesso file si trova in un'altra directory , devi passare a quella directory o utilizzare il percorso completo del file:

grep 'extra\|value' /home/test/Desktop/sample.txt

Per cercare più di due parole , continua ad aggiungerli allo stesso modo.

Ad esempio, per cercare tre parole, aggiungi la stringa di caratteri desiderata seguita da una barra rovesciata e una pipe:

grep 'extra\|value\|service' sample.txt

Vediamo come appare il comando grep sopra quando usi grep -E , egrep e grep -e :

grep -E ‘extra|value|service’ sample.txt
egrep ‘extra|value|service’ sample.txt
grep -e extra -e value -e service sample.txt

Useremo grep in ulteriori esempi, ma puoi usare la sintassi che preferisci.

Cerca più corrispondenze esatte in un file

Se vuoi trovare corrispondenze esatte per più pattern, passa il -w segnala al grep comando.

grep -w 'provide\|count' sample.txt

Ad esempio, l'output seguente mostra la differenza tra la ricerca senza -w e con esso:

Come puoi vedere, i risultati sono diversi. Il primo comando mostra tutte le righe con le stringhe che hai usato.

Il secondo comando mostra come grep corrispondere corrispondenze esatte per più stringhe. L'output stampa solo le righe che contengono le parole esatte.

Ignora maiuscole e minuscole quando usi Grep per più stringhe

Per evitare di perdere qualcosa quando cerchi più pattern, usa il -i flag per ignorare le maiuscole e minuscole.

Ad esempio, ignoreremo il caso con questo comando:

grep -i 'phoenix\|linux' sample.txt

L'output mostra come differiscono i due comandi. Se includi il -i contrassegna e ignora le maiuscole e minuscole, il risultato per più corrispondenze include tutte le corrispondenze.

In questo modo, ottieni risultati aggiuntivi. Se aggiungi anche il -w flag a questo comando, puoi restringere ulteriormente i risultati:

Mostra il conteggio di più corrispondenze in un file

Supponiamo che tu stia monitorando un file di registro e desideri vedere se il numero di avvisi o messaggi aumenta. Non vuoi vedere risultati dettagliati quando viene restituito un gran numero di partite.

Ad esempio, per mostrare il conteggio di più corrispondenze in bootstrap.log file, inserisci:

grep -c 'warning\|error' /var/log/bootstrap.log

L'output stampa il numero di corrispondenze. In questo modo, puoi determinare rapidamente se il numero di avvisi ed errori è aumentato.

Grep per più modelli in un tipo di file specifico

Puoi usare grep per cercare più stringhe solo in un determinato tipo di file. Se desideri monitorare i file di registro in una directory o se desideri eseguire la ricerca in tutti i file di testo, utilizza un asterisco e l'estensione del file invece del nome di un file.

Ad esempio, per cercare avvisi ed errori in tutti i .log file in /var/log/ directory, immettere:

grep 'warning\|error' /var/log/*.log

Per dimostrare meglio come funziona questa opzione, mostreremo solo il conteggio delle corrispondenze.

L'output mostra tutti i file che grep ha cercato per le stringhe che hai usato.

Cerca ricorsivamente più pattern in un file

Il grep Il comando esegue la ricerca solo nella directory corrente quando si utilizza il carattere jolly asterisco.

Per includere tutte le sottodirectory durante la ricerca di più pattern, aggiungi il -R operatore a grep:

grep -R 'warning\|error' /var/log/*.log

L'output restituirà risultati da tutti i file grep comando trovato in /var/log/ directory e le sue sottodirectory.


Linux
  1. Come specifichiamo più modelli di ignoranza per il comando `tree`?

  2. Come trovare più stringhe nei file??

  3. Come posso cercare uno schema multilinea in un file?

  4. Come faccio a grep in modo ricorsivo?

  5. Come cercare i contenuti di più file pdf?

Come Grep per più stringhe e pattern

Come fare buon uso del comando 'grep'

Ricerca di una stringa in più file su Linux

Come grep \n nel file

Ricerca di più modelli (parole) con ack?

Come chown directory per più utenti?