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ó |
-i | Per a una cerca que no distingeix entre majúscules i minúscules |
-r | Per cercar de manera recursiva tots els fitxers del directori especificat i els seus subdirectoris |
-c | Per mostrar el nombre total de vegades que apareix una cadena |
-v | Per mostrar les línies que no coincideixen |
-w | Filtreu 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.