Come escludere una parola con grep

Sommario:

Anonim

Lo strumento da riga di comando grep è incredibilmente utile per cercare nei dati di testo righe e frammenti che corrispondono a una stringa, un carattere, una parola o un'espressione regolare definita. Mentre la maggior parte degli usi di grep sono per l'ordinamento dei dati per le corrispondenze di sintassi, cosa succede se invece si desidera escludere una parola o una stringa con grep? Escludere le corrispondenze di riga con grep è altrettanto utile quanto trovare e stampare le corrispondenze in grep, quindi vediamo come escludere le corrispondenze di stringhe ed escludere le parole con grep.

Ovviamente vorrai avere un po' di esperienza con la riga di comando e conoscere grep per trovarlo utile. Se vuoi seguire, puoi aprire l'applicazione Terminale e provarlo tu stesso. Poiché grep è un'utilità agnostica del sistema operativo, puoi usare il trucco di esclusione in Mac OS, Linux, unix o qualsiasi altra cosa tu abbia che utilizza grep.

Come escludere una singola parola con grep

Il modo più semplice per escludere righe con una stringa o una corrispondenza di sintassi è usare grep e il flag -v.

Ad esempio, diciamo che stiamo usando cat per stampare un file dalla riga di comando, ma vogliamo escludere tutte le righe che includono il termine "ThisWord", quindi la sintassi sarà la seguente:

"

cat esempio.txt | grep -v QuestaParola"

L'output sarà il file di testo example.txt ma escluse le righe che contengono una corrispondenza stringa con "ThisWord".

Puoi anche utilizzare grep direttamente sui file ed escludere le corrispondenze di riga in base a parole o sintassi, in questo modo:

"

grep -v QuestaParola>"

Usa quello che funziona meglio per il tuo particolare flusso di lavoro.

Come escludere più stringhe o parole con grep

Ora che sai come escludere le corrispondenze per una singola parola, la prossima domanda ovvia riguarda l'esclusione di più parole con grep. È altrettanto semplice e ci sono diversi modi per farlo usando il flag -v così come il flag -e.

Per prima cosa prendiamo l'esempio precedente dell'uso di cat su un file indirizzato a grep ed escludiamo qualsiasi riga che corrisponda a due parole; "Word1" e "Word2", questo sarebbe simile al seguente:

"

cat esempio.txt | grep -v -e Parola1 -e Parola2"

Tutte le righe che contengono "Word1" o "Word2" saranno escluse dai risultati stampati.

Puoi anche usare grep direttamente sui file proprio come prima:

"

grep -v -e Parola1 -e Parola2 esempio.txt"

Un altro approccio consiste nel separare cosa escludere con grep utilizzando una barra verticale per separare ogni corrispondenza, in questo modo:

"

grep -Ev parola1|parola2 esempio.txt"

Se provi una di queste opzioni su un file di testo di esempio, scoprirai che l'output è identico indipendentemente dall'approccio adottato, escludendo ciascuna riga che include frasi, sintassi, parole o corrispondenza di testo.

Fantastico, fammi vedere un utile esempio di esclusione dei dati con grep!

Per un esempio pratico che gli utenti Mac esperti potrebbero trovare utile, possiamo utilizzare l'esclusione di grep durante la stampa e l'interrogazione della cronologia della riga di comando per trovare i comandi eseguiti in precedenza per trovare le corrispondenze di default, ma escludendo alcune stringhe di default selezionate dal produzione.

Nell'esempio qui stamperemo la cronologia dei comandi per le corrispondenze di stringhe predefinite, ma escluderemo qualsiasi corrispondenza che abbia a che fare con iTunes come definito da "com.apple.itunes":

"

cronologia |grep defaults write |grep -v -e com.apple.itunes"

Quindi, se hai seguito, questo riporterebbe tutte le esecuzioni storiche del comando "defaults write", ma escludendo tutto ciò che riguardava l'applicazione iTunes. Bello eh?

Se hai degli usi particolarmente utili per escludere le corrispondenze con grep, condividili con noi nei commenti qui sotto! E se ti è piaciuto questo articolo, quasi sicuramente ti piacerebbe sfogliare i nostri numerosi articoli sulla riga di comando qui dove c'è molto altro da imparare!

Come escludere una parola con grep