GNU/Linux >> Linux Esercitazione >  >> Linux

Come Grep per più stringhe e pattern

grep è un potente strumento da riga di comando che consente di cercare in uno o più file di input le righe che corrispondono a un'espressione regolare e di scrivere ciascuna riga corrispondente nell'output standard.

In questo articolo, ti mostreremo come usare GNU grep per cercare più stringhe o pattern.

Grep più pattern #

GNU grep supporta tre sintassi di espressioni regolari, Basic, Extended e compatibile con Perl. Quando non viene specificato alcun tipo di espressione regolare, grep interpreta i modelli di ricerca come espressioni regolari di base.

Per cercare più pattern, usa l'operatore OR (alternanza).

L'operatore di alternanza | (pipe) consente di specificare diverse possibili corrispondenze che possono essere stringhe letterali o set di espressioni. Questo operatore ha la precedenza più bassa di tutti gli operatori di espressioni regolari.

La sintassi per la ricerca di più pattern usando grep le espressioni regolari di base sono le seguenti:

grep 'pattern1\|pattern2' file...

Racchiudi sempre l'espressione regolare tra virgolette singole per evitare l'interpretazione e l'espansione dei metacaratteri da parte della shell.

Quando si utilizzano espressioni regolari di base, i metacaratteri vengono interpretati come caratteri letterali. Per mantenere i significati speciali dei metacaratteri, è necessario eseguire l'escape con una barra rovesciata (\ ). Questo è il motivo per cui stiamo eseguendo l'escape dell'operatore OR (| ) con una barra.

Per interpretare il modello come un'espressione regolare estesa, invoca grep il -E ( o --extended-regexp ) opzione. Quando si utilizza un'espressione regolare estesa, non eseguire l'escape di | operatore:

grep -E 'pattern1|pattern2' file...

Per ulteriori informazioni su come costruire espressioni regolari, consulta il nostro articolo Grep regex.

Grep più stringhe #

Le stringhe letterali sono i modelli più elementari.

Nell'esempio seguente, stiamo cercando tutte le occorrenze delle parole fatal , error e critical nel file loggerror di Nginx:

grep 'fatal\|error\|critical' /var/log/nginx/error.log

Se la stringa che stai cercando include spazi, racchiudila tra virgolette doppie.

Ecco lo stesso esempio che utilizza l'espressione regolare estesa, che elimina la necessità di eseguire l'escape dell'operatore |

grep -E 'fatal|error|critical' /var/log/nginx/error.log

Per impostazione predefinita, grep fa distinzione tra maiuscole e minuscole. Ciò significa che i caratteri maiuscoli e minuscoli vengono trattati come distinti.

Per ignorare maiuscole e minuscole durante la ricerca, invoca grep with il -i opzione (o --ignore-case ):

grep -i 'fatal\|error\|critical' /var/log/nginx/error.log

Durante la ricerca di una stringa, grep visualizzerà tutte le righe in cui la stringa è incorporata in stringhe più grandi. Quindi, se stavi cercando "errore", grep stamperà anche le righe in cui "errore" è incorporato in parole più grandi, come "senza errori" o "antiterroristi".

Per restituire solo quelle righe in cui la stringa specificata è una parola intera (racchiusa da caratteri non di parola), usa il -w ( o --word-regexp ) opzione:

grep -w 'fatal\|error\|critical' /var/log/nginx/error.log

I caratteri delle parole includono caratteri alfanumerici (a-z, A-Z e 0-9) e trattini bassi (_). Tutti gli altri caratteri sono considerati caratteri non di parole.

Per maggiori dettagli su grep opzioni, visita il nostro articolo Comando Grep.

Conclusione #

Ti abbiamo mostrato come grep per cercare più pattern, stringhe e parole.

Se hai domande o feedback, sentiti libero di lasciare un commento.


Linux
  1. Linux:come sapere per cosa Grep in Dmesg?

  2. Linux:come grep per una parola specifica e afferrare il testo?

  3. Come combinare find e grep per una ricerca complessa? ( GNU/linux, trova, grep )

  4. Come chown directory per più utenti?

  5. grep coppie di modelli e file

Come Grep per più stringhe, pattern o parole

Come confrontare numeri e stringhe nello script della shell di Linux

Come installare e configurare più motori di scacchi su XBoard

Come usare bash if -z e if -n per testare le stringhe in Linux

Come eseguire il backup e il ripristino della scheda SD per Raspberry Pi

Come afferrare una parola specifica e afferrare il testo