Com utilitzar el comandament Grep a Linux

Comprensió de l'ordre grep amb exemples pràctics per filtrar i mostrar fàcilment el contingut del fitxer

GREP significa "Impressió d'expressió regular global". És una utilitat de línia d'ordres útil proporcionada per Linux, per cercar la línia de text que coincideixi amb el patró proporcionat per l'usuari.

grep pren l'entrada de l'usuari en forma de cadenes o paraules que l'usuari vol cercar en un fitxer determinat. Aleshores, l'ordre comprova el fitxer especificat per l'usuari per a aquest patró i després retorna les línies que coincideixen amb el patró proporcionat.

Fa un treball excel·lent filtrant el contingut d'un fitxer, de manera que la nostra tasca és més fàcil de cercar contingut determinat en un o diversos fitxers simultàniament.

En aquest article, repassem el funcionament del grep comanda amb alguns exemples pràctics en detall.

Opcions disponibles amb grep comandament

Aquestes són algunes de les opcions fonamentals que utilitzareu amb freqüència amb el grep comandament.

OpcióDescripció
-iPer a una cerca que no distingeix entre majúscules i minúscules
-rPer cercar de manera recursiva tots els fitxers del directori especificat i els seus subdirectoris
-cPer mostrar el nombre total de vegades que apareix una cadena
-vPer mostrar les línies que no coincideixen
-wFiltreu aquesta paraula en particular utilitzada per separat

Utilitzant el grep comandament

grep L'ordre s'utilitza normalment amb la pipe (|) utilitat. Es pot implementar amb el shell pipe quan el voleu utilitzar amb altres ordres de Linux. Encara que, grep també es pot utilitzar individualment sense tub (|) utilitat.

Vegem algunes de les sintaxis bàsiques del grep comanda amb i sense la utilitat pipe.

Primer us mostraré el fitxer de text de mostra que faré servir per il·lustrar-lo grep comandament.

L'ÍNDA ÉS UN BON PAÍS DE GENT AMANDA DE LA PAU. L'Índia es basa en tres pilars: legislatiu, executiu i judicial. L'Índia és un bell país de gent amant de la pau. L'Índia es preocupa per la gent, ja que el seu recurs coordenades cartesianes és la importància de totes les coordenades cartesianes. A continuació hi ha dues línies buides. l'ús d'un carro de bous és habitual al poble per a les tasques agràries. Aquest és el final del fitxer de mostra.

grep utilitzat amb canonada ( | )utilitat

grep L'ordre es pot implementar juntament amb altres ordres de Linux mitjançant les canonades de l'intèrpret d'ordres. Com, utilitzant el gat comanda per mostrar el contingut del fitxer però alhora canalitzar la sortida mitjançant l' grep comanda per mostrar només el contingut que voleu veure. Això quedarà més clar quan passem per l'exemple.

Sintaxi:

[ordre] | grep [cadena]

Exemple:

cat sample.txt | grep legislatura

Aquí, he utilitzat el gat comanda per mostrar algunes línies del fitxer 'sample.txt'. Només s'han de mostrar aquelles línies que continguin la paraula "legislatura" i ignorar la resta de línies.

Sortida:

gaurav@ubuntu:~/workspace$ cat sample.txt | grep legislature india es basa en tres pilars: legislatiu, executiu i judicial. gaurav@ubuntu:~/workspace$

grep utilitzat sense tub ( | )utilitat

grep Fins i tot es pot utilitzar directament com a comanda individual sense utilitzar la canonada ( | ) utilitat.

Sintaxi:

grep [cadena_a_cercar] [nom del fitxer]

Exemple:

grep India sample.txt

Sortida:

L'Índia és un bell país de gent amant de la pau. L'Índia té cura de la gent com a recurs

Per tant, he utilitzat el grep comanda directament per filtrar les línies que contenen la cadena "Índia" del fitxer de text "sample.txt".

Cerca sense distinció entre majúscules i minúscules utilitzant grep comandament

Linux és molt prudent amb la distinció entre majúscules i minúscules quan disparem les ordres al terminal. Això requereix que l'usuari tingui cura amb el cas de la cadena introduïda a l'ordre.

Vegem-ho a través d'un exemple.

grep peace sample.txt

En aquest cas, no obtindrem una sortida, ja que no hi ha cap paraula com a "pau" al fitxer de mostra. Tenim la paraula 'Pau' amb una 'P' majúscula. La paraula és la mateixa però quan fem servir el grep comanda sense cap opció, cerca la coincidència exacta al fitxer, sense tenir en compte els canvis en la majúscula i minúscula.

Per evitar aquesta ambigüitat, simplement podeu utilitzar el -i opció que diu literalment el grep comandament "Oblida't del cas on he posat la cadena i només cal que cerqui tots els patrons coincidents al fitxer".

Sintaxi:

grep -i [cadena] [nom del fitxer]

Exemple:

grep -i peace sample.txt

Sortida:

L'ÍNDA ÉS UN BON PAÍS DE GENT AMANDA DE LA PAU. L'Índia és un bell país de gent amant de la pau.

Es mostren totes les línies coincidents independentment del cas en què es trobi la cadena coincident.

Cerca recursiva utilitzant grep comandament

El -r L'opció buscarà tots els fitxers d'un directori i tots els seus subdirectoris que coincideixin amb el patró de cadena proporcionat per l'usuari a l'ordre.

Sintaxi:

grep -i -r [cadena] [camí_fitxer]

Exemple:

grep -i -r tomcat /home/gaurav/workspace

La cadena aquí és "tomcat" i es cercarà a l'espai de treball del directori. Tots els subdirectoris i fitxers del directori "espai de treball" també s'escanejaran perquè coincideixin amb el patró de cadena proporcionat.

Sortida:

./context_log.policy:// catalina.policy - Permisos de política de seguretat per a Tomcat 7 ./context_log.policy:// Nota: si tomcat-juli.jar es troba a ${catalina.base} i no a ${catalina.home }, ./context_log.policy:// grant codeBase "fitxer:${catalina.base}/bin/tomcat-juli.jar" {..} ./context_log.policy:grant codeBase "fitxer:${catalina.home" }/bin/tomcat-juli.jar" { ./context_log.policy: permís java.lang.RuntimePermission "accessClassInPackage.org.apache.tomcat.websocket.server"; ./context.xml: ./catalina.properties:# - JAR Tomcat Bootstrap ./catalina.properties:# - JAR de l'API Tomcat ./catalina.properties:# - JAR Tomcat ./catalina.properties:# - Comú que no sigui Tomcat JAR ./catalina.properties:org.apache.catalina.startup.TldConfig.jarsToSkip=tomcat7-websocket.jar ./catalina.properties:tomcat.util.buf.StringCache.byte.enabled=true ./catalina.properties:# tomcat.util.buf.StringCache.char.enabled=true ./catalina.properties:#tomcat.util.buf.StringCache.trainThreshold=500000 ./catalina.properties:#tomcat.util.buf.StringCache.cacheSize=5000 . /server.xml: pathname="conf/tomcat-users.xml" /> ./server.xml: 

NOTA: Mentre s'utilitza el -r opció amb el grep Hem de proporcionar la ruta del fitxer i no el nom del fitxer

Cerca paraules senceres només amb grep comandament

Moltes vegades el cas és que estareu cercant una paraula, però acabareu omplint el vostre terminal amb les línies coincidents que sí que contenen la vostra paraula coincident però no com a paraula individual. És possible que vegeu les línies que contenen algunes paraules la subpart de les quals és la cadena que heu introduït.

Confós amb això? No us preocupeu, és molt més fàcil d'entendre un cop tens l'exemple.

Exemple:

Aquí, vull cercar una paraula individual "carretó" i mostrar totes les línies que coincideixen amb aquesta paraula al fitxer "sample.txt".

grep -i carretó sample.txt

Sortida:

Coordenades cartesianes importància de totes les coordenades cartesianes. l'ús d'un carro de bous és habitual al poble per a les tasques agràries El carro va desaparèixer quan el nen el va deixar solt.

A la sortida, podeu observar que la paraula "cartesià" també conté la paraula "carretó" i, per tant, les línies que contenen la paraula "cartesià" també es mostren tot i que no volem que es mostrin.

Podeu utilitzar el -w opció amb el grep ordre per resoldre aquesta ambigüitat.

Sintaxi:

grep -i -w [cadena] [nom del fitxer]

Exemple:

grep -i -w carretó sample.txt

Sortida:

l'ús d'un carro de bous és habitual al poble per a les tasques agràries. El carro va desaparèixer quan el nen el va deixar solt. 

Ara, quan hàgiu utilitzat el -w opció amb grep només obtindreu les línies en què s'utilitza la paraula "carretó" com un tot.

Cerca invertida utilitzant grep comandament

grep L'ordre també es pot utilitzar de manera inversa. Podem utilitzar el grep comanda de manera oposada amagant les línies coincidents i només mostrant les línies on no es trobi la coincidència. Podeu fer-ho utilitzant el -v opció amb el grep comandament.

Sintaxi:

grep -i -v [cadena] [nom del fitxer]

Exemple:

grep -i -v recurs sample.txt

Sortida:

L'ÍNDA ÉS UN BON PAÍS DE GENT AMANDA DE LA PAU. L'Índia es basa en tres pilars: legislatiu, executiu i judicial. L'Índia és un bell país de gent amant de la pau. coordenades cartesianes importància de totes les coordenades cartesianes. l'ús d'un carro de bous és habitual al poble per a les tasques agràries. Aquest és el final del fitxer de mostra.

A la sortida, es mostren totes les altres línies excepte la línia que conté la paraula "recurs".

Recompte d'ocurrències de la cadena coincident

La sortida del grep L'ordre sol ser molt llarga si les dades del fitxer són extenses. Com més coincidències, més llargues són les sortides del grep comandament. Linux us ofereix una opció on podeu mostrar el nombre d'ocurrències de la coincidència.

Sintaxi:

grep -i -c [cadena] [nom del fitxer]

Exemple:

grep -i -c india sample.txt

Sortida:

gaurav@ubuntu:~/workspace$ grep -i -c india sample.txt 4 gaurav@ubuntu:~/workspace$

Aquí, la sortida és un número que és el nombre d'ocurrències de la paraula "Índia" al fitxer sample.txt.

NOTA: He utilitzat el -i opció en cada exemple per estar segur amb el problema de la distinció entre majúscules i minúscules. En cas que estigueu segur de la majúscules i minúscules de la paraula que esteu cercant, podeu ometre amb seguretat -i opció.

Conclusió

Hem après els usos fonamentals del grep comanda als sistemes Linux en aquest tutorial. També vam aprendre a mostrar diversos continguts que millor s'adaptin als nostres requisits i no atapeïm el terminal amb un munt de línies. grep L'ordre segurament serà un estalvi de temps si s'utilitza per escanejar grans conjunts de dades.