Comando Grep: potente strumento per trovare il testo dal terminale

Comando Grep

Quasi chiunque abbia un computer o che ci lavori conoscerà la scorciatoia da tastiera Ctrl + F per trovare il testo. La "F" sta per "Find", "to find" in inglese e può essere utilizzata, ad esempio, per trovare del testo su una pagina web. Questa scorciatoia è disponibile anche in molte applicazioni, ci sono programmi che usano la "B" per "Cerca, ma queste scorciatoie funzionano solo se siamo all'interno dell'applicazione e con il file aperto. In Linux abbiamo strumenti molto potenti che possiamo lanciare dal Terminale e se vogliamo trova qualsiasi testo che è nel nostro team useremo il comando grep.

grep È un comando che ci aiuterà a trovare il testo all'interno del file che indichiamo. Il suo nome deriva da g / re / p, un comando che funziona per qualcosa di simile in un editor di testo Unix / Linux. Come molti altri comandi, grep Ha molti opzioni disponibili che aggiungeremo sotto forma di lettere e ognuno servirà a un compito diverso. Combinando queste opzioni saremo in grado di eseguire ricerche complesse in uno o più file. Qui ti mostriamo tutto ciò che devi sapere.

con grep troveremo qualsiasi testo in qualsiasi file

Prima di tutto spiegheremo le opzioni disponibili:

  • -i: non distinguerà tra maiuscole e minuscole.
  • -w: costringilo a trovare solo parole specifiche.
  • -v: seleziona le linee che non corrispondono.
  • -n: mostra il numero della riga con le parole richieste.
  • -h: rimuove il prefisso dal nome del file Unix nell'output.
  • -r: cerca le directory in modo ricorsivo.
  • -R: come -r ma segui tutti i collegamenti simbolici.
  • -l: mostra solo i nomi dei file con le righe selezionate.
  • -c- Mostra solo un conteggio per file delle righe selezionate.
  • -Colore: Visualizza i modelli corrispondenti nei colori.

Nell'immagine che hai intestato a questo articolo ho cercato la parola "Images" nel file "830.desktop" che si trova in quel percorso. Come puoi vedere ho scritto:

grep Imágenes /home/pablinux/Documentos/830.desktop

Tieni presente che in questo articolo scriveremo esempi che devono essere modificati in base alle nostre preferenze di ricerca. Dicendo "File", "Word", ecc., Faremo riferimento al file con il suo percorso. Se avessi appena scritto "grep Images 830.desktop" avrei ricevuto un messaggio che diceva che il file non esiste. O così sarebbe a meno che il file non si trovi nella directory principale.

Altri esempi potrebbero essere:

  • grep -i images /home/pablinux/Documentos/830.desktop, dove "immagini" sarebbe la parola che vogliamo trovare e il resto il file con il suo percorso. Questo esempio cercherà "immagini" nel file "830.desktop" senza distinzione tra maiuscole e minuscole.
  • immagini grep -R: cercherà tutte le righe di una directory e tutte le sue sottodirectory in cui si trova la parola "immagini".
  • grep -c esempio test.txt: questo ci cercherebbe e mostrerebbe il numero totale di volte in cui "example" appare in un file chiamato "test.txt.

con grep possiamo anche cercare file

Se quello che vogliamo è trovare il file 830.desktop, scriveremo il seguente comando:

grep 830.desktop

Questo eseguirà un cerca il file «830.desktop» nella nostra cartella personaleOvvero, se il file si trova nella cartella personale di un altro utente, non verrà trovato. Questa è la cosa più normale al mondo perché un utente non ha il permesso di accedere al contenuto di un altro senza la sua password.

Come eseguire ricerche ricorsive

grep ci permette anche eseguire ricerche soggette a regole o linee guida ricorrenti. Ad esempio, leggi tutti i file in ciascuna directory che contengono la parola "Pablinux". Per questo scriveremo:

grep -r Pablinux /home/

Oh bene:

grep -R Pablinux /home/

Vedremo i risultati per "Pablinux" su una riga separata preceduta dal nome del file in cui è stato trovato. Se non vogliamo vedere i nomi dei file nell'output dei dati useremo l'opzione -h (da "nascondi"; nascondi):

grep -h -R Pablinux /home/

Possiamo unire le opzioni e scrivere "-hR" senza virgolette.

Come eseguire ricerche di parole esatte

A volte ci sono file che contengono ciò che vogliamo cercare qualcos'altro. Ad esempio, questo può accadere a noi in parole composte e cercando "foreste" possiamo trovare "ranger". Se vogliamo trova una parola esatta useremo l'opzione -w:

grep -w bosques /home/pablinux/Documentos/vacaciones.txt

Il comando precedente cercherà "foreste", ignorando i ranger, nel file "vacation.txt" nel percorso indicato. Se quello che vogliamo è cercare due parole diverse useremo il comando egrep:

egrep -w bosques|plantas /ruta/del/archivo

Scopri quante volte una parola appare in un file

grep è anche capace di conta quante volte appare una parola in un file. Per questo useremo l'opzione -c:

grep -c prueba /ruta/al/archivo

Aggiungendo l'opzione -n ​​quello che vedremo è il numero della riga in cui appare la parola.

Ricerche inverse

Possiamo anche fare l'opposto, ovvero cerca le righe che non contengono una parola. Per questo useremo l'opzione -v, che sarebbe la seguente:

grep -v la ruta/al/archivo

Il comando precedente visualizzerà tutte le righe che non contengono la parola "il". Questo può tornare utile in documenti o elenchi in cui una parola viene ripetuta molte volte e, per qualche motivo, dobbiamo accedere al resto delle righe.

Accesso alle informazioni di sistema con grep

Modello PC

grep non è solo in grado di cercare all'interno dei file. È altresì in grado di visualizzare le informazioni di sistema. Nello screenshot precedente possiamo vedere come ci mostra quale modello di PC abbiamo (so che non è il laptop più potente del mondo). Per questo abbiamo utilizzato il comando:

cat /proc/cpuinfo | grep -i 'Model'

Oh bene:

grep -i 'Model' /proc/cpuinfo

Se quello che vogliamo è vedere i nomi delle unità disco scriveremo:

dmesg | egrep '(s|h)d[a-z]'

Come elencare solo i nomi dei file corrispondenti

Se vogliamo vedere un elenco con solo i nomi dei file che corrispondono a una ricerca useremo l'opzione -l come mostrato di seguito:

grep -l 'main' *.c

E se vogliamo vedere la parola a colori scriveremo:

grep --color palabra /ruta/al/archivo

Come puoi vedere, il comando grep è una strumento molto potente Ne vale la pena soprattutto nei casi in cui non ricordiamo dove abbiamo scritto qualcosa o in programmazione. Inoltre, ci aiuta a trovare informazioni sul sistema in un modo che piacerà agli amanti del terminale. Questa guida sul comando per trovare i testi ti è stata utile grep?


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile dei dati: Miguel Ángel Gatón
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.

  1.   nordici suddetto

    Ciao!
    Quando dici che Grep è usato anche per cercare file, non penso che sia corretto perché se esegui grep EXPRESSION e non gli passi il file, aspetterà l'input dei dati dallo standard input.
    Secondo la pagina del manuale:
    grep cerca nei FILE di input con nome le righe che contengono una corrispondenza con il PATTERN specificato. Se non viene specificato alcun file, o se viene fornito il file "-", grep cerca lo standard input.
    Ecco perché puoi usarlo in pipeline, come quello che analizza l'output di / proc / cpuinfo passando l'output di questo comando come input a grep puoi fare la ricerca.
    saluti

  2.   Ana suddetto

    Post molto buono.
    Lo spieghi molto bene e vai dritto al punto.