Razumevanje ukaza grep s praktičnimi primeri za enostavno filtriranje in prikaz vsebine datoteke
GREP
pomeni "Global Regular Expression Print". Je uporaben pripomoček ukazne vrstice, ki ga ponuja Linux, za iskanje vrstice besedila, ki se ujema z vzorcem, ki ga je zagotovil uporabnik.
grep
prevzame vnos od uporabnika v obliki nizov ali besed, ki jih uporabnik želi iskati v določeni datoteki. Ukaz nato preveri datoteko, ki jo je za ta vzorec določil uporabnik, in nato vrne vrstice, ki se ujemajo z navedenim vzorcem.
Odlično opravi s filtriranjem vsebine datoteke, s čimer nam olajša iskanje določene vsebine v eni ali več datotekah hkrati.
V tem članku si oglejmo delovanje grep
povejte z nekaj praktičnimi primeri v podrobnosti.
Možnosti, ki so na voljo z grep
ukaz
To je nekaj temeljnih možnosti, ki jih boste pogosto uporabljali z grep
ukaz.
Možnost | Opis |
-jaz | Za iskanje brez upoštevanja velikih in malih črk |
-r | Za rekurzivno iskanje vseh datotek v določenem imeniku in njegovih podimenikih |
-c | Za prikaz skupnega števila prikazov niza |
-v | Za prikaz neujemajočih se vrstic |
-w | Filter za to določeno besedo, ki se uporablja ločeno |
Uporabljati grep
ukaz
grep
ukaz se običajno uporablja s cevjo (|
) uporabnost. Lahko ga implementirate z lupino cevi, ko jo želite uporabiti z nekaterimi drugimi ukazi Linuxa. čeprav, grep
lahko se uporablja tudi posamezno brez cevi (|
) uporabnost.
Poglejmo si nekaj osnovnih sintaks grep
ukaz z in brez pripomočka za cevi.
Naj vam najprej pokažem vzorčno besedilno datoteko, ki jo bom uporabil za ponazoritev grep
ukaz.
INDIJA JE LEPA DRŽAVA LJUDI LJUBEČIH MIR. Indija stoji na treh stebrih zakonodajne, izvršilne in sodne oblasti. Indija je čudovita država ljudi, ki ljubijo mir. Indija skrbi za ljudi, saj je njen vir kartezijanskih koordinat pomembnosti vseh kartezijskih koordinat. Sledi dve prazni vrstici. uporaba volovske vprege je v vasi običajen prizor za agrarna opravila. To je konec vzorčne datoteke.
grep
uporablja se s cevjo ( | )uporabnost
grep
ukaz se lahko izvaja skupaj z drugimi ukazi Linuxa z uporabo lupinskih cevi. Na primer z uporabo mačka
ukaz za prikaz vsebine datoteke, hkrati pa za oddajanje izhoda s pomočjo grep
ukaz za prikaz samo vsebine, ki si jo želite ogledati. To bo bolj jasno, ko bomo pregledali primer.
Sintaksa:
[ukaz] | grep [niz]
Primer:
mačka sample.txt | grep zakonodajalec
Tukaj sem uporabil mačka
ukaz za prikaz nekaj vrstic iz datoteke 'sample.txt'. Prikazane morajo biti samo tiste vrstice, ki vsebujejo besedo »zakonodajalec«, preostale vrstice pa prezreti.
Izhod:
gaurav@ubuntu:~/workspace$ cat sample.txt | grep legislature india stoji na treh stebrih zakonodajne, izvršilne in sodne oblasti. gaurav@ubuntu:~/workspace$
grep
uporablja se brez cevi ( | )uporabnost
grep
lahko celo uporabite neposredno kot posamezen ukaz brez uporabe cevi ( |
) uporabnost.
Sintaksa:
grep [string_to_be_searched] [ime datoteke]
Primer:
grep India sample.txt
Izhod:
Indija je čudovita država ljudi, ki ljubijo mir. Indija skrbi za ljudi kot svoj vir
Tako sem uporabil grep
ukaz neposredno za filtriranje vrstic, ki vsebujejo niz 'India' iz besedilne datoteke 'sample.txt'.
Iskanje brez razlike med velikimi in malimi črkami grep
ukaz
Linux je zelo previden glede občutljivosti na velike in male črke, ko sprožimo ukaze na terminalu. To od uporabnika zahteva, da bo previden pri nizu, ki je vstavljen v ukaz.
Poglejmo si to skozi primer.
grep peace sample.txt
V tem primeru ne bomo dobili izhoda, saj v vzorčni datoteki ne obstaja beseda "mir". Imamo besedo "Mir" z veliko "P". Beseda je enaka, vendar ko uporabljamo grep
brez kakršne koli možnosti, išče natančno ujemanje v datoteki, pri čemer ne upošteva morebitnih sprememb velikih črk.
Da bi se izognili tej dvoumnosti, lahko preprosto uporabite -jaz
možnost, ki dobesedno pove grep
ukaz "pozabite na primer, v katerega sem vstavil niz, in samo poiščite vse ujemajoče se vzorce v datoteki."
sintaksa:
grep -i [niz] [ime datoteke]
Primer:
grep -i mir sample.txt
Izhod:
INDIJA JE LEPA DRŽAVA LJUDI LJUBEČIH MIR. Indija je čudovita država ljudi, ki ljubijo mir.
Vse ujemajoče se vrstice so prikazane ne glede na primer, v katerem je ujemajoči se niz.
Rekurzivno iskanje z uporabo grep
ukaz
The -r
možnost bo poiskala vse datoteke v imeniku in vse njegove podimenike, ki se ujemajo z vzorcem niza, ki ga je zagotovil uporabnik v ukazu.
Sintaksa:
grep -i -r [niz] [pot_datoteke]
Primer:
grep -i -r tomcat /home/gaurav/workspace
Tukaj je niz 'tomcat' in bo poiskan v delovnem prostoru imenika. Vsi podimeniki in datoteke v imeniku 'delovni prostor' bodo tudi skenirani, da se ujemajo s priloženim vzorcem nizov.
Izhod:
./context_log.policy:// catalina.policy - dovoljenja varnostne politike za Tomcat 7 ./context_log.policy:// Opomba: če je tomcat-juli.jar v ${catalina.base} in ne v ${catalina.home }, ./context_log.policy:// grant codeBase "file:${catalina.base}/bin/tomcat-juli.jar" {..} ./context_log.policy:grant codeBase "file:${catalina.home }/bin/tomcat-juli.jar" { ./context_log.policy: dovoljenje java.lang.RuntimePermission "accessClassInPackage.org.apache.tomcat.websocket.server"; ./context.xml: ./catalina.properties:# - JAR-ji Tomcat Bootstrap ./catalina.properties:# - JAR-ji Tomcat API ./catalina.properties:# - JAR-ji Tomcat ./catalina.properties:# - Pogosti, ki niso Tomcat JAR-ji ./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=5.cacheSize. /server.xml: pathname="conf/tomcat-users.xml" /> ./server.xml:
OPOMBA: Med uporabo -r
možnost z grep
ukazom moramo zagotoviti pot do datoteke in ne imena datoteke
Iskanje celih besed samo z grep
ukaz
Velikokrat je tako, da boste iskali eno besedo, vendar boste na koncu zapolnili svoj terminal z ujemajočimi se vrsticami, ki vsebujejo vašo ujemajočo se besedo, vendar ne kot posamezno besedo. Morda boste videli vrstice, ki vsebujejo nekaj besed, katerih poddel je niz, ki ste ga vnesli.
Ste zmedeni s tem? Ne skrbite, ko dobite primer, je veliko lažje razumeti.
Primer:
Tukaj želim poiskati posamezno besedo "košarica" in prikazati vse vrstice, ki se ujemajo s to besedo, v datoteki "sample.txt".
grep -i košarica sample.txt
Izhod:
Pomen kartezijanskih koordinat vseh kartezijanskih koordinat. uporaba volovske vprege je v vasi običajen prizor za agrarna opravila Voz je izginil, ko ga je deček pustil.
V izhodu lahko opazite, da beseda 'kartezijanski' vsebuje tudi besedo 'voziček' in zato so prikazane tudi vrstice, ki vsebujejo besedo 'kartezijanski', čeprav ne želimo, da so prikazane.
Lahko uporabite -w
možnost z grep
ukaz za rešitev te nejasnosti.
Sintaksa:
grep -i -w [niz] [ime datoteke]
Primer:
grep -i -w voziček sample.txt
Izhod:
uporaba volovske vprege je v vasi običajen prizor za agrarna opravila. Voziček je izginil, ko ga je deček pustil ohlapnega.
Zdaj, ko ste uporabili –w
možnost z grep
dobili boste samo vrstice, v katerih je beseda "voziček" uporabljena kot celota.
Obrnjeno iskanje z uporabo grep
ukaz
grep
ukaz se lahko uporablja tudi v obratnem načinu. Lahko uporabimo grep
ukaže nasprotno, tako da skrijete ujemajoče se vrstice in prikažete samo vrstice, kjer ni ujemanja. To lahko storite z uporabo -v
možnost z grep
ukaz.
Sintaksa:
grep -i -v [niz] [ime datoteke]
Primer:
grep -i -v vir sample.txt
Izhod:
INDIJA JE LEPA DRŽAVA LJUDI LJUBEČIH MIR. Indija stoji na treh stebrih zakonodajne, izvršilne in sodne oblasti. Indija je čudovita država ljudi, ki ljubijo mir. kartezične koordinate pomembnost vseh th kartezičnih koordinat. uporaba volovske vprege je v vasi običajen prizor za agrarna opravila. To je konec vzorčne datoteke.
V izhodu so prikazane vse druge vrstice, razen vrstice, ki vsebuje besedo 'vir'.
Štetje pojavov ujemajočega se niza
Izhod iz grep
ukaz je običajno zelo dolg, če so podatki v datoteki obsežni. Več ko je vžigalic, daljši so izhodi grep
ukaz. Linux vam ponuja možnost, kjer lahko prikažete število ponovitev ujemanja.
Sintaksa:
grep -i -c [niz] [ime datoteke]
Primer:
grep -i -c indija sample.txt
Izhod:
gaurav@ubuntu:~/workspace$ grep -i -c india sample.txt 4 gaurav@ubuntu:~/workspace$
Tukaj je izhod številka, ki je število pojavljanj besede »Indija« v datoteki sample.txt.
OPOMBA: Uporabil sem -jaz
možnost v vsakem primeru, da bi bili varni pri vprašanju občutljivosti velikih in malih črk. Če ste prepričani o veliki črki besede, ki jo iščete, lahko varno izpustite -jaz
možnost.
Zaključek
Naučili smo se temeljne uporabe grep
ukaz v sistemih Linux v tej vadnici. Naučili smo se tudi prikazovati različne vsebine, ki najbolj ustrezajo našim zahtevam, in ne natrpati terminala z množico vrstic. grep
ukaz bo zagotovo prihranil čas, če bo uporabljen za skeniranje velikih podatkovnih nizov.