GNU/Linux >> Linux Esercitazione >  >> Linux

Come escludere in Grep

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

In questo articolo, ti mostreremo come escludere una o più parole, schemi o directory durante la ricerca con grep .

Escludi parole e schemi #

Per visualizzare solo le righe che non corrispondono a un modello di ricerca, utilizzare il -v ( o --invert-match ) opzione.

Ad esempio, per stampare le righe che non contengono la stringa nologin useresti:

grep -wv nologin /etc/passwd
root:x:0:0:root:/root:/bin/bash
git:x:994:994:git daemon user:/:/usr/bin/git-shell
linuxize:x:1000:1000:linuxize:/home/linuxize:/bin/bash

Il -w l'opzione dice a grep per restituire solo quelle righe in cui la stringa specificata è una parola intera (racchiusa da caratteri non di parola).

Per impostazione predefinita, grep fa distinzione tra maiuscole e minuscole. Ciò significa che i caratteri maiuscoli e minuscoli vengono trattati come distinti. Per ignorare il caso durante la ricerca, invoca grep con il -i opzione.

Se la stringa di ricerca include spazi, è necessario racchiuderla tra virgolette singole o doppie.

Per specificare due o più modelli di ricerca, utilizzare il -e opzione:

grep -wv -e nologin -e bash /etc/passwd

Puoi usare il -e opzione tutte le volte che vuoi.

Un'altra opzione per escludere più modelli di ricerca consiste nell'unire i modelli utilizzando l'operatore OR | .

L'esempio seguente stampa le righe che non contengono le stringhe nologin o bash :

grep -wv 'nologin\|bash' /etc/passwd

GNU grep supporta tre sintassi di espressioni regolari, Basic, Extended e compatibile con Perl. Per impostazione predefinita, grep interpreta il modello come un'espressione regolare di base in cui i metacaratteri come | perdono il loro significato speciale e devi usare le loro versioni con barra rovesciata.

Se utilizzi l'opzione di espressione regolare estesa -E , quindi l'operatore | non deve essere evitato, come mostrato di seguito:

grep -Ewv 'nologin|bash' /etc/passwd

È possibile specificare diverse possibili corrispondenze che possono essere stringhe letterali o set di espressioni. Nell'esempio seguente, le righe in cui la stringa games si verificano all'inizio di una riga sono esclusi:

grep -v "^games" file.txt

L'output di un comando può essere filtrato con grep attraverso le tubazioni e sul terminale verranno stampate solo le linee che corrispondono a un determinato motivo.

Ad esempio, per stampare tutti i processi in esecuzione sul tuo sistema eccetto quelli in esecuzione come utente "root" puoi filtrare l'output di ps comando:

ps -ef | grep -wv root

Escludi directory e file #

A volte quando si esegue una ricerca ricorsiva con -r o -R opzioni, potresti voler escludere directory specifiche dal risultato della ricerca.

La principale differenza tra -r o -R opzioni è che quando grep viene invocato con R maiuscolo seguirà tutti i collegamenti simbolici

Per escludere una directory dalla ricerca, usa --exclude-dir opzione. Il percorso della directory esclusa è relativo alla directory di ricerca.

Ecco un esempio che mostra come cercare la stringa linuxize in tutti i file all'interno di /etc , escluso il /etc/pki directory:

grep -R --exclude-dir=pki linuxize /etc

Per escludere più directory, racchiudere le directory escluse tra parentesi graffe e separarle con virgole senza spazi.

Ad esempio, per trovare i file che contengono la stringa 'gnu' nel tuo sistema Linux escludendo il proc , boot e sys directory che eseguiresti:

grep -r --exclude-dir={proc,boot,sys} gnu /

Quando si utilizza la corrispondenza con caratteri jolly, è possibile escludere i file il cui nome di base corrisponde al GLOB specificato in --exclude opzione.

Nell'esempio seguente, stiamo cercando in tutti i file nella directory di lavoro corrente la stringa linuxize , esclusi i file che terminano con .png e .jpg directory:

grep -rl --exclude=*.{png,jpg} linuxize *

Conclusione #

Il grep Il comando consente di escludere pattern e directory durante la ricerca di file.


Linux
  1. Come Grep nei file Pdf?

  2. Usando grep per cercare al contrario

  3. Come posso escludere le directory da grep -R?

  4. Come grep \n nel file

  5. Come cercare le pagine man di Linux (ad esempio con grep)

Come cercare in Vim/Vi

Come eseguire la ricerca del modello nei file utilizzando Grep

Come escludere in Grep Command in Linux

Come cercare in Nano

Come usare grep in Linux

Come eseguire la ricerca Grep su tutti i file e in tutte le directory