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
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?
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ó
Molt bon post.
El expliques molt bé i vas directe la gra.