Come escludere una parola con grep
Lo strumento della riga di comando grep è estremamente utile per cercare tra i dati di testo per linee e snippet che corrispondono a una stringa, un carattere, una parola o un'espressione regolare definiti. Mentre la maggior parte degli usi di grep sono per ordinare i dati per le corrispondenze di sintassi, e se invece vuoi 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 esaminiamo come escludere le corrispondenze di stringa ed escludere le parole con grep.
Ovviamente vorrete avere qualche esperienza da riga di comando e l'esposizione a grep per trovare ciò utile. Se vuoi seguire, puoi aprire l'applicazione Terminale e provarlo 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 che usi grep.
Come escludere una singola parola con grep
Il modo più semplice per escludere le righe con una corrispondenza di stringhe o sintassi è usando grep e il flag -v.
Per esempio, diciamo che stiamo usando cat per stampare un file sulla riga di comando, ma vogliamo escludere tutte le righe che includono il termine "ThisWord", quindi la sintassi sarebbe la seguente:
cat example.txt | grep -v "ThisWord"
L'output sarà il file di testo example.txt ma escludendo qualsiasi riga che contenga una corrispondenza di 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 "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 per una singola parola, la prossima domanda ovvia riguarda l'esclusione di più parole con grep. Questo è altrettanto semplice, e ci sono diversi modi per farlo usando il flag -v e il flag -e.
Per prima cosa prendiamo l'esempio sopra riportato di usare cat su un file inviato a grep e escludere qualsiasi riga che corrisponda a due parole; "Word1" e "Word2", questo apparirebbe come il seguente:
cat example.txt | grep -v -e "Word1" -e "Word2"
Qualsiasi riga che contiene "Parola1" o "Parola2" verrà esclusa dai risultati stampati.
Puoi anche utilizzare grep direttamente sui file proprio come prima:
grep -v -e "Word1" -e "Word2" example.txt
Un altro approccio è quello di separare cosa escludere con grep usando una pipe per separare ogni match, in questo modo:
grep -Ev "word1|word2" example.txt
Se provi una di queste opzioni su un file di testo di esempio, troverai che l'output è identico a prescindere dall'approccio che segui, escludendo ogni riga che include frasi, sintassi, parole o corrispondenze di testo mirate.
Ottimo, mostrami un utile esempio di esclusione dei dati con grep!
Per un esempio pratico che gli utenti Mac avanzati potrebbero trovare utili, possiamo usare l'esclusione grep quando stampiamo e interrogando la cronologia della riga di comando per trovare i comandi precedentemente eseguiti per trovare le corrispondenze predefinite, ma escludendo alcune stringhe predefinite selezionate dall'output.
Nell'esempio qui stamperemo la cronologia dei comandi per le corrispondenze delle stringhe predefinite, ma escludiamo qualsiasi cosa che corrisponda a ciò che ha a che fare con iTunes come definito da "com.apple.itunes":
history |grep "defaults write" |grep -v -e "com.apple.itunes"
Quindi, se lo hai seguito, questo riporterà tutte le esecuzioni storiche del comando "write defaults", ma escludendo tutto ciò che riguarda l'applicazione iTunes. Bello eh?
Se hai qualche utilità particolare di escludere le partite con grep, condividili con noi nei commenti qui sotto! E se ti è piaciuto questo articolo, ti piacerebbe sicuramente sfogliare i nostri numerosi articoli da riga di comando qui dove c'è ancora molto da imparare!