Come escludere una parola con grep
Lo strumento della riga di comando grep è estremamente utile per cercare nei dati di testo righe e frammenti che corrispondono a una stringa, un carattere, una parola o un’espressione regolare definiti. Mentre la maggior parte degli usi di grep sono per l’ordinamento dei dati per le corrispondenze di sintassi, cosa succede se lo desideri escludere una parola o una stringa con grep invece? Escludere le corrispondenze di riga con grep è utile tanto quanto trovare e stampare le corrispondenze di grep, quindi discutiamo come escludere le corrispondenze di stringa e come escludere le parole con grep.
Ovviamente, vorrai avere un po ‘di esperienza con la riga di comando e l’esposizione a grep per trovarlo utile. Se vuoi seguire, puoi aprire l’app Terminal e provarla tu stesso. Poiché grep è un’utilità agnostica del sistema operativo, puoi utilizzare 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 le righe con una stringa o una corrispondenza di sintassi è utilizzare grep e il flag -v.
Ad esempio, supponiamo di utilizzare cat per stampare un file sulla riga di comando, ma vogliamo escludere tutte le righe che includono il termine “ThisWord”, quindi la sintassi sarebbe simile a questa:
cat example.txt | grep -v "ThisWord"
Il risultato sarà il file di testo example.txt, escludendo però qualsiasi riga che contenga una corrispondenza stringa di “ThisWord”.
Puoi anche grep direttamente sui file ed escludere le corrispondenze di riga in base a parole o sintassi, in questo modo:
grep -v "ThisWord" example.txt
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 di una sola parola, la prossima domanda ovvia riguarda l’esclusione di più parole con grep. È così 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 con pipe grep ed escludiamo qualsiasi riga che corrisponda a due parole; “Word1” e “Word2”, sarebbero simili a questo:
cat example.txt | grep -v -e "Word1" -e "Word2"
Eventuali righe contenenti “Word1” o “Word2” verranno escluse dai risultati stampati.
Puoi anche grep direttamente sui file, proprio come prima:
grep -v -e "Word1" -e "Word2" example.txt
Un altro approccio consiste nel separare cosa escludere con grep utilizzando una pipe per separare ogni corrispondenza, in questo modo:
grep -Ev "word1|word2" example.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 le righe che includono le espressioni, la sintassi, le parole o la corrispondenza di testo mirate.
Fantastico, mostrami un utile esempio di esclusione dei dati con grep!
Per un esempio pratico che gli utenti Mac avanzati potrebbero trovare utili, possiamo utilizzare grep exclude durante la stampa e interrogare la cronologia della riga di comando per trovare i comandi eseguiti in precedenza per trovare le corrispondenze predefinite, ma escludendo dall’output alcune stringhe predefinite selezionate.
Nell’esempio qui, stamperemo la cronologia dei comandi per le corrispondenze di stringhe predefinite, ma escluderemo eventuali corrispondenze relative a iTunes, come definito da “com.apple.itunes”:
history |grep "defaults write" |grep -v -e "com.apple.itunes"
Quindi, se hai seguito, questo riporterebbe tutte le esecuzioni storiche del comando “scrittura predefinita”, ma escludendo qualsiasi cosa relativa all’app iTunes. Bello non è vero?
Se hai 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 divertirai a sfogliare i nostri numerosi articoli sulla riga di comando qui, dove c’è molto da imparare!