La comanda grep de Linux s'utilitza com a mètode per filtrar l'entrada. GREP significa "Global Regular Expression Printer" i, per tant, per poder utilitzar-lo de manera eficaç, hauria de tenir cert coneixement sobre expressions regulars.
En aquest article, aprendreu una sèrie d'exemples que us ajudaran a entendre l'ordre grep.
01 de 09Com cercar una cadena en un fitxer amb GREP

Imagineu que teniu un fitxer de text anomenat llibres amb els següents títols de llibres infantils:
- Robin Hood
- Caputxeta vermella
- Peter Pan
- Goldilocks i els tres ossos
- Blancaneus i els set nans
- Pinnochio
- El gat al barret
- Els tres porquets
- El Gruffalo
- Charlie i la fàbrica de xocolata
Per trobar tots els llibres amb la paraula "El" en el títol, utilitzaria la següent sintaxi:
grep Els llibresEs retornaran els següents resultats:
- Goldilocks i els tres ossos
- Blancaneus i els set nans
- El gat al barret
- Els tres porquets
- El Gruffalo
- Charlie i la fàbrica de xocolata
En cada cas, es ressaltarà la paraula "El".
La cerca es distingeix entre majúscules i minúscules, així que si un dels títols tingués "el" en comptes de "El", no seria retornat.
Per ignorar el cas, podeu afegir el següent interruptor:
grep els llibres - ignore-caseTambé podeu utilitzar el botó -i de la manera següent:
Continueu llegint a continuació
02 de 09Cerca una cadena en un fitxer amb comodins
El comandament grep és molt poderós. Podeu utilitzar una multitud de tècniques de concordança de patrons per filtrar els resultats.
En aquest exemple, us mostraré com cercar una cadena en un fitxer amb comodins.
Imagineu que teniu un fitxer anomenat llocs amb els següents noms de llocs escocesos:
aberdeenaberystwythaberlourinverurieinvernessNewburghnou cérvolnou gallowayGlasgowedinburghSi voleu cercar tots els llocs amb el nom del vostre nom, useu la sintaxi següent:
llocs grep inver *L'asterisc (*) comodí significa 0 o molts. Per tant, si teniu un lloc anomenat Inver o un lloc anomenat Inverness, els dos serien retornats.
Un altre comodí que podeu utilitzar és el període (.). Podeu utilitzar-lo per coincidir amb una sola lletra.
llocs grep inver.rL'ordre anterior trobaria llocs anomenats inverurie i inverary, però no trobaria la inversió, ja que només hi pot haver un comodí entre les dues r que es denota en un sol període.
El comodí d'època és útil, però pot causar problemes si teniu una com a part del text que esteu cercant.
Per exemple, mireu aquesta llista de noms de domini
- linux.about.com
- pcsupport.about.com
- mp3.about.com
- minecraft.about.com
- androidgames.about.com
- netforbeginners.about.com
- dailylinuxuser.com
- google.co.uk
- google.au
- direct.gov.uk
Per trobar tots els .coms que es poden fer cerques utilitzant la següent sintaxi:
grep * about * domainnamesL'ordre anterior es reduiria si la llista contingués el següent nom:
- dailylinuxuser.com/about.html
Per tant, podeu provar la següent sintaxi:
grep * about.com noms de dominiAixò funcionaria bé si no hi havia un domini amb el següent nom:
aboutycom.comPer cercar realment el terme about.com, hauríeu d'escapar del punt de la següent manera:
grep * sobre noms de domini .comEl comodí final per mostrar-vos és el signe d'interrogació que representa zero o un caràcter.
Per exemple:
noms de noms de grep?L'ordre anterior tornaria a aberdeen, aberystwyth o fins i tot berwick.
Continueu llegint a continuació
03 de 09Cercar cadenes al principi i al final de la línia utilitzant grep
El símbol quilat (^) i el dòlar ($) us permeten cercar patrons al principi i al final de les línies.
Imagineu que teniu un fitxer anomenat futbol amb els següents noms d'equip:
- Blackpool
- Liverpool
- Manchester City
- Ciutat de Leicester
- Manchester United
- Newcastle United
- FC United of Manchester
Si volgués trobar tots els equips que van començar amb Manchester, utilitzaria la sintaxi següent:
grep ^ equips de ManchesterL'ordre anterior tornaria Manchester City i Manchester United però no FC United Of Manchester.
D'altra banda, podeu trobar tots els equips que acaben amb United utilitzant la següent sintaxi:
equips grep United $L'ordre anterior tornaria a Manchester United i Newcastle United però no al FC United Of Manchester.
04 de 09Comptant el nombre de coincidències utilitzant grep
Si no voleu tornar les línies reals que coincideixen amb un patró utilitzant grep, però només voleu saber quants hi ha, podeu utilitzar la següent sintaxi:
grec -c model de fitxer d'entradaSi el patró coincideix dues vegades, es retornaria el número 2.
Continueu llegint a continuació
05 de 09Trobar tots els termes que no coincideixen amb grep
Imagineu que teniu una llista de noms de llocs amb els països que es detallen de la manera següent:
- Aberdeen Escòcia
- Glasgow Escòcia
- Liverpool Anglaterra
- badia de Colwyn
- Londres, Anglaterra
Heu notat que la badia de Colwyn no té cap país associat.
Per cercar tots els llocs amb un país, podeu utilitzar la següent sintaxi:
grep land $ placesEls resultats retornats serien tots els llocs, excepte per a la badia de Colwyn.
Això, òbviament, només funciona per llocs que acaben en terrenys (amb prou feines científics).
Podeu invertir la selecció amb la següent sintaxi:
grep -v terra $ llocsAixò trobaria tots els llocs que no acabaven amb la terra.
06 de 09Com trobar línies buides en fitxers amb grep
Imagineu que teniu un fitxer d'entrada que utilitza una aplicació de tercers que deixa de llegir el fitxer quan troba una línia buida de la manera següent:
- aberdeen escocia
- inverness escocia
- liverpool inglaterra
- vals de la badia de Colwyn
Quan l'aplicació arribi a la línia després de Liverpool, deixarà de llegir el que significa que la badia de Colwyn es perd totalment.
Podeu utilitzar grep per cercar línies en blanc amb la següent sintaxi:
grep ^ $ placesLamentablement, això no és especialment útil perquè només torna les línies en blanc.
Per descomptat, podria obtenir un recompte de la quantitat de línies en blanc com a comprovació per veure si el fitxer és vàlid de la següent manera:
Grep -c ^ $ placesTanmateix, seria més útil conèixer els números de línia que tinguin una línia en blanc perquè pugui reemplaçar-los. Podeu fer-ho amb el següent comandament:
grep -n ^ $ placesContinueu llegint a continuació
07 de 09Com cercar cadenes de majúscules o minúscules utilitzant grep
Mitjançant grep podeu determinar quines línies d'un fitxer tenen caràcters en majúscules amb la següent sintaxi:
grep 'A-Z' nom del fitxerEls claudàtors us permeten determinar l'interval de caràcters. En l'exemple anterior, coincideix amb qualsevol caràcter que es trobi entre A i Z.
Per tant, per a que coincideixi amb els caràcters en minúscules, podeu utilitzar la següent sintaxi:
grep 'a-z' nom del fitxerSi voleu unir només lletres i no números o altres símbols, podeu utilitzar la sintaxi següent:
grep 'a-zA-Z' nom del fitxerPodeu fer el mateix amb els nombres de la següent manera:
grep '0-9' nom del fitxer 08 de 09S'està cercant patrons repetitius usant grep
Podeu utilitzar claudàtors ({} per a cercar un patró repetitiu.
Imagineu que teniu un fitxer amb números de telèfon de la següent manera:
- 055-1234
- 055-4567
- 555-1545
- 444-0167
- 444-0854
- 4549-2234
- x44-1234
Ja sabeu que la primera part del número ha de ser de tres dígits i voleu trobar les línies que no coincideixin amb aquest patró.
Des de l'exemple anterior, saps que 0-9 retorna tots els números d'un fitxer.
En aquest cas volem que les línies que comencin amb tres números seguits d'un guió (-). Podeu fer-ho amb la següent sintaxi:
grep "^ 0-9 0-9 0-9 -" númerosCom sabem amb exemples anteriors, el quilat (^) vol dir que la línia ha de començar amb el següent patró.
El 0-9 buscarà qualsevol número entre 0 i 9. Com que això s'inclou tres vegades coincideix amb 3 números. Finalment, hi ha un guió per indicar que un guió ha de tenir èxit en els tres nombres.
Si utilitzeu els claudàtors encaixos, podeu fer que la cerca sigui més petita de la següent manera:
grep "^ 0-9 {3 } -" númerosLa barra inclinada escapa {parèntesi perquè funcioni com a part de l'expressió regular, però, en essència, el que diu és 0-9 {3}, que significa qualsevol número entre 0 i 9 tres vegades.
Els claudàtors també es poden utilitzar de la següent manera:
{5,10}{5,}El {5,10} significa que el caràcter que es busca s'ha de repetir com a mínim 5 vegades, però no més de 10, mentre que el {5,} significa que el caràcter s'ha de repetir almenys 5 vegades, però pot ser més que això.
Continueu llegint a continuació
09 de 09Ús de la sortida d'altres comandaments mitjançant grep
Fins aquí hem observat la concordança de patrons en els fitxers individuals, però Grep pot utilitzar la sortida d'altres ordres com a entrada per a la concordança de patrons.
Un bon exemple d'això és l'ús de la comanda ps que enumera els processos actius.
Per exemple, executeu l'ordre següent:
ps-efEs mostraran tots els processos en execució del vostre sistema.
Podeu utilitzar grep per cercar un procés en execució determinat de la manera següent:
ps -ef | grep firefoxResum
La comanda grep és un comandament fonamental per a Linux i és un que val la pena aprendre, ja que farà que la vostra vida sigui molt més fàcil en cercar fitxers i processos quan feu servir el terminal.













