Comanda grep: potent eina per trobar text des del Terminal

comanda grep

Gairebé qualsevol usuari que tingui ordinador o que treballi amb un coneixerà la drecera de teclat Ctrl + F per trobar text. La «F» ve de «Find», «trobar» en anglès, i pot servir-nos, per exemple, per trobar text en una pàgina web. Aquest drecera està disponible també en moltes aplicacions, havent programes que usen la «B» de 'Explora, però aquestes dreceres només funcionen si estem dins de l'aplicació i amb l'arxiu obert. A Linux tenim eines molt potents que podem llançar des del Terminal i si volem trobar qualsevol text que estigui al nostre equip usarem la comanda grep.

grep és una ordre que ens servirà per trobar text dins de l'arxiu que li indiquem. El seu nom prové de g / re / p, una ordre que serveix per a alguna cosa semblant a un editor de textos d'Unix / Linux. Com molts altres ordres, grep té moltes opcions disponibles que afegirem en forma de lletres i cadascuna servirà per a una tasca diferent. A l'combinar aquestes opcions serem capaços de fer cerques complexes en un o diversos arxius. A continuació t'ensenyem tot el que cal saber.

amb grep trobarem qualsevol text en qualsevol arxiu

Primer de tot explicarem les opcions disponibles:

  • -i: No diferenciarà entre majúscules i minúscules.
  • -w: Força que només trobi paraules concretes.
  • -v: Selecciona les línies que no coincideixen.
  • -n: Mostra el número de la línia amb les paraules de sol·licitades.
  • -h: Elimina el prefix del nom de l'arxiu Unix a la sortida.
  • -r: Cerca directoris recursivament.
  • -R: Com -r però segueix tots els enllaços simbòlics.
  • -l: Mostra només noms de fitxers amb les línies seleccionades.
  • -c: Mostra només un compte per arxiu de les línies seleccionades.
  • -color: Mostra els patrons coincidents en colors.

A la imatge que teniu encapçalant aquest article he buscat la paraula «Imatges» a l'arxiu «830.desktop» que està en aquesta ruta. Com veieu, he escrit:

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

Cal tenir en compte que en aquest article escriurem exemples que cal modificar segons les nostres preferències de cerca. A el dir «Arxiu», «Paraula», etc., ens estarem referint a l'arxiu amb la seva ruta. Si jo hagués escrit només «grep Imatges 830.desktop» hauria rebut un missatge dient que l'arxiu no existeix. O així seria si no és que l'arxiu estigués al directori arrel.

Altres exemples serien:

  • grep -i imatges /home/pablinux/Documentos/830.desktop, On «imatges» seria la paraula que volem trobar i la resta l'arxiu amb la seva ruta. Aquest exemple buscaria «imatges» a l'arxiu «830.desktop» sense distingir entre majúscules i minúscules.
  • grep -R imatges: Buscaria totes les línies d'un directori i tots els seus subdirectoris on es trobés la paraula «imatges».
  • grep -c exemple prova.txt: Això ens buscaria i mostraria el total de vegades que «exemple» apareix en un arxiu anomenat «prova.txt.

amb grep també podem buscar arxius

Si el que volem és trobar l'arxiu 830.desktop, escriurem la següent comanda:

grep 830.desktop

Això farà una recerca de l'arxiu «830.desktop» a la nostra carpeta personal, És a dir, si el fitxer es troba a la carpeta personal d'un altre usuari no la trobarà. Això és el més normal de món perquè un usuari no té permís per accedir a l'contingut d'un altre sense el seu clau.

Com fer cerques recursives

grep també ens permet fer cerques subjectes a regles o pautes recurrents. Per exemple, llegir tots els arxius de cada directori que continguin la paraula «Pablinux». Per a això escriurem:

grep -r Pablinux /home/

O bé:

grep -R Pablinux /home/

Veurem els resultats de «Pablinux» en una línia separada precedida d'el nom de l'arxiu en el qual va ser trobat. Si no volem veure els noms de l'arxiu a la sortida de dades farem servir l'opció -h (de «hide»; amagar):

grep -h -R Pablinux /home/

Podem unir les opcions i escriure «-HR» sense les cometes.

Com fer cerques de paraules exactes

A vegades hi ha arxius que contenen el que volem buscar alguna cosa més. Per exemple, això ens pot passar en paraules compostes i buscant «boscos» podem trobar «guardaboscos». si volem trobar una paraula exacta farem servir l'opció -w:

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

L'anterior ordre buscaria «boscos», ignorant guardaboscos, a l'arxiu «vacaciones.txt» a la ruta indicada. Si el que volem és buscar dues paraules diferents usarem la comanda egrep:

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

Saber quantes vegades apareix una paraula en un arxiu

grep també és capaç de comptar quantes vegades apareix una paraula en un arxiu. Per a això farem servir l'opció -c:

grep -c prueba /ruta/al/archivo

Afegint l'opció -n el que veurem és el número de la línia en la qual apareix la paraula.

recerques inverses

També podem fer el contrari, és a dir, buscar les línies que no continguin una paraula. Per a això farem servir l'opció -v, el que quedaria de la següent manera:

grep -v la ruta/al/archivo

La comanda anterior mostraria totes les línies que no continguessin la paraula «la». Això pot venir bé en documents o llistes en què una paraula es repeteixi moltes vegades i, per alguna raó, necessitem accedir a la resta de línies.

Accedint a la informació de el sistema amb grep

Model de el PC

grep no només és capaç de buscar dins d'arxius. també és capaç de mirar informació de sistema. A la captura anterior podem veure com ens mostra quin model de PC tenim (ja sé que no és el portàtil més potent de l'món). Per això hem fet servir la comanda:

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

O bé:

grep -i 'Model' /proc/cpuinfo

Si el que volem és veure els noms de les unitats del disc escriurem:

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

Com llistar només els noms dels arxius que coincideixen

Si volem veure una llista amb només els noms dels arxius que coincideixen amb una recerca farem servir l'opció -l com es mostra a continuació:

grep -l 'main' *.c

I si volem veure la paraula en colors escriurem:

grep --color palabra /ruta/al/archivo

Com podeu veure, la comanda grep és una eina molt potent que val la pena sobretot en casos en què no recordem on hem escrit alguna cosa o en programació. A més, ens serveix per esbrinar informació de sistema d'una manera que li agradarà als amants de l'Terminal. T'ha estat útil aquesta guia sobre la comanda per trobar textos grep?


Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.

  1.   Nordri va dir

    Hola!
    Quan dius que Grep també serveix per buscar arxius no crec que sigui correcte ja que si executes grep EXPRESSIÓ i no li passes el fitxer, esperarà l'entrada de dades de l'entrada estàndard.
    Segons la pàgina de l'manual:
    grep searches the named input files for lines containing a match to the given PATTERN. If no files are specified, or if the file "-" is given, grep searches standard input.
    Per això pots usar-lo en pipelines, com el que parseas la sortida de / proc / cpuinfo a el passar la sortida d'aquesta comanda com a entrada de grep pots fer la cerca.
    una salutació

  2.   Ana va dir

    Molt bon post.
    El expliques molt bé i vas directe la gra.