Suprasti grep komandą su praktiniais pavyzdžiais, kad būtų galima lengvai filtruoti ir rodyti failo turinį
GREP
reiškia „Global Regular Expression Print“. Tai naudinga „Linux“ teikiama komandų eilutės priemonė, skirta ieškoti teksto eilutės, atitinkančios vartotojo pateiktą šabloną.
grep
paima įvestį iš vartotojo kaip eilutes arba žodžius, kurių vartotojas nori ieškoti tam tikrame faile. Tada komanda patikrina vartotojo nurodytą failą, kuriame yra šis šablonas, ir grąžina eilutes, kurios atitinka pateiktą šabloną.
Filtruodamas failo turinį atlieka puikų darbą, todėl mūsų užduotis yra lengviau ieškoti tam tikro turinio viename ar keliuose failuose vienu metu.
Šiame straipsnyje apžvelgsime, kaip veikia grep
komandą su kai kuriais išsamiais praktiniais pavyzdžiais.
Galimos parinktys su grep
komandą
Tai yra keletas pagrindinių parinkčių, kurias dažnai naudosite su grep
komandą.
Parinktis | apibūdinimas |
-i | Dėl paieškos neskiriant didžiųjų ir mažųjų raidžių |
-r | Rekursyviai ieškoti visų failų nurodytame kataloge ir jo pakatalogiuose |
-c | Norėdami parodyti bendrą eilutės parodymų skaičių |
-v | Kad būtų rodomos nesutampančios eilutės |
-w | Filtruokite tam konkretų žodį, naudojamą atskirai |
Naudojant grep
komandą
grep
komanda paprastai naudojama su vamzdžiu (|
) naudingumas. Jį galima įdiegti su apvalkalo vamzdžiu, kai norite jį naudoti su kitomis Linux komandomis. nors, grep
gali būti naudojamas ir atskirai be vamzdžio (|
) naudingumas.
Pažiūrėkime į kai kurias pagrindines sintakses grep
komanda su vamzdžių programa ir be jos.
Pirmiausia leiskite jums parodyti teksto failo pavyzdį, kurį naudosiu iliustruodamas grep
komandą.
INDIJA YRA GRAŽI TAIKĄ MYLIČIŲ ŽMONIŲ ŠALIS. Indija stovi ant trijų įstatymų leidžiamosios, vykdomosios ir teisminės valdžios ramsčių. Indija yra graži taiką mylinčių žmonių šalis. Indija rūpinasi žmonėmis, nes jos išteklius dekartinės koordinatės yra svarbios visų dekartinių koordinačių. Toliau pateikiamos dvi tuščios eilutės. Naudojimasis jaučių vežimu yra įprastas vaizdas kaime atliekant agrarinius darbus. Tai pavyzdinio failo pabaiga.
grep
naudojamas su vamzdžiu ( | )naudingumas
grep
komanda gali būti įgyvendinta kartu su kitomis Linux komandomis naudojant apvalkalo vamzdžius. Pavyzdžiui, naudojant katė
komandą, kad būtų rodomas failo turinys, bet tuo pačiu metu perduodama išvestis naudojant grep
komandą, kad būtų rodomas tik tas turinys, kurį norite matyti. Tai bus aiškiau, kai peržiūrėsime pavyzdį.
Sintaksė:
[komanda] | grep [styga]
Pavyzdys:
katės pavyzdys.txt | grep įstatymų leidėjas
Čia aš panaudojau katė
komandą, kad būtų rodomos kai kurios eilutės iš failo „sample.txt“. Turi būti rodomos tik tos eilutės, kuriose yra žodis „įstatymų leidėjas“, ir nepaisyti kitų eilučių.
Išvestis:
gaurav@ubuntu:~/workspace$ cat sample.txt | grep legislature india stovi ant trijų įstatymų leidžiamosios, vykdomosios ir teisminės valdžios ramsčių. gaurav@ubuntu:~/workspace$
grep
naudojamas be vamzdžio ( | )naudingumas
grep
netgi gali būti naudojama tiesiogiai kaip atskira komanda, nenaudojant vamzdžio ( |
) naudingumas.
Sintaksė:
grep [ieškoma_eilutė] [failo pavadinimas]
Pavyzdys:
grep Indija sample.txt
Išvestis:
Indija yra graži taiką mylinčių žmonių šalis. Indija rūpinasi žmonėmis kaip ištekliais
Taigi aš panaudojau grep
komanda tiesiogiai filtruoti eilutes, kuriose yra eilutė „Indija“ iš tekstinio failo „sample.txt“.
Mažųjų ir mažųjų raidžių neskiriama paieška naudojant grep
komandą
Linux labai atsargiai žiūri į didžiųjų ir mažųjų raidžių jautrumą, kai paleidžiame komandas terminale. Tam reikia, kad vartotojas būtų atsargus dėl į komandą įtrauktos eilutės.
Pažiūrėkime tai per pavyzdį.
grep taikos pavyzdys.txt
Tokiu atveju negausime išvesties, nes pavyzdiniame faile nėra žodžio „taika“. Mes turime žodį „Peace“ su didžiąja „P“. Žodis yra tas pats, bet kai naudojame grep
komandą be jokios parinkties, ji ieško tikslios atitikties faile, neatsižvelgdama į bet kokius didžiosios ir mažosios raidės pakeitimus.
Norėdami išvengti šios dviprasmybės, galite tiesiog naudoti -i
parinktis, kuri tiesiogine prasme nurodo grep
komandą „Pamirškite atvejį, kai įdėjau eilutę, ir tiesiog ieškokite visų atitinkančių šablonų faile.
Sintaksė:
grep -i [eilutė] [failo pavadinimas]
Pavyzdys:
grep -i taikos pavyzdys.txt
Išvestis:
INDIJA YRA GRAŽI TAIKĄ MYLIČIŲ ŽMONIŲ ŠALIS. Indija yra graži taiką mylinčių žmonių šalis.
Rodomos visos atitinkančios eilutės, neatsižvelgiant į tai, kokiu atveju yra atitinkama eilutė.
Rekursinė paieška naudojant grep
komandą
The -r
parinktis ieškos visų failų kataloge ir visuose jo pakatalogiuose, kurie atitinka vartotojo komandoje pateiktą eilutės šabloną.
Sintaksė:
grep -i -r [eilutė] [failo_kelias]
Pavyzdys:
grep -i -r tomcat /home/gaurav/workspace
Čia esanti eilutė yra „tomcat“ ir jos bus ieškoma katalogo darbo srityje. Taip pat bus nuskaityti visi pakatalogiai ir failai „darbo srities“ kataloge, kad atitiktų pateiktą eilutės šabloną.
Išvestis:
./context_log.policy:// catalina.policy – Tomcat 7 saugos politikos leidimai ./context_log.policy:// Pastaba: jei tomcat-juli.jar yra ${catalina.base}, o ne ${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: permission java.lang.RuntimePermission "accessClassInPackage.org.apache.tomcat.websocket.server"; ./context.xml: ./catalina.properties:# – Tomcat Bootstrap JAR ./catalina.properties:# – Tomcat API JAR ./catalina.properties:# – Tomcat JAR ./catalina.properties:# – Dažni ne Tomcat JAR ./catalina.properties:org.apache.catalina.startup.TldConfig.jarsToSkip=tomcat7-websocket.jar ./catalina.properties:tomcat.util.buf.StringCache.byte.enabled=true ./catal:#ina tomcat.util.buf.StringCache.char.enabled=true ./catalina.properties:#tomcat.util.buf.StringCache.trainThreshold=500000 ./catalina.properties:#tomcat.util.buf.StringCache=cache0Size /server.xml: pathname="conf/tomcat-users.xml" /> ./server.xml:
PASTABA: Kai naudojate -r
variantas su grep
komandoje turime nurodyti failo kelią, o ne failo pavadinimą
Ieškoma tik ištisų žodžių su grep
komandą
Dažnai būna taip, kad ieškosite vieno žodžio, bet galiausiai savo terminalą užpildysite atitinkančiomis eilutėmis, kuriose yra jūsų atitinkantis žodis, bet ne kaip atskiras žodis. Galite matyti eilutes, kuriose yra keletas žodžių, kurių poskyris yra jūsų įvesta eilutė.
Supainiojote su tuo? Nesijaudinkite, kai gausite pavyzdį, daug lengviau suprasti.
Pavyzdys:
Čia noriu ieškoti atskiro žodžio „krepšelis“ ir rodyti visas eilutes, atitinkančias šį žodį faile „sample.txt“.
grep -i krepšelis pavyzdys.txt
Išvestis:
Dekarto koordinatės svarba visos Dekarto koordinatės. jaučių vežimas yra įprastas vaizdas kaime atliekant agrarinius darbus Vežimėlis dingo, kai berniukas jį paliko palaidą.
Išvestyje galite pastebėti, kad žodyje „Dekartinis“ taip pat yra žodis „krepšelis“, taigi, eilutės, kuriose yra žodis „Dekartinis“, taip pat rodomos, net jei nenorime, kad jos būtų rodomos.
Galite naudoti -w
variantas su grep
komandą išspręsti šią dviprasmybę.
Sintaksė:
grep -i -w [eilutė] [failo pavadinimas]
Pavyzdys:
grep -i -w krepšelio pavyzdys.txt
Išvestis:
Naudojimasis jaučių vežimu yra įprastas vaizdas kaime atliekant agrarinius darbus. Vežimėlis dingo, nes berniukas jį paliko palaidą.
Dabar, kai naudojote –w
variantas su grep
gausite tik tas eilutes, kuriose žodis „krepšelis“ vartojamas kaip visuma.
Apversta paieška naudojant grep
komandą
grep
komanda taip pat gali būti naudojama atvirkštine tvarka. Mes galime naudoti grep
komandą priešingai, paslėpdami atitinkančias eilutes ir rodydami tik tas eilutes, kuriose atitiktis nerasta. Tai galite padaryti naudodami -v
variantas su grep
komandą.
Sintaksė:
grep -i -v [eilutė] [failo pavadinimas]
Pavyzdys:
grep -i -v išteklių pavyzdys.txt
Išvestis:
INDIJA YRA GRAŽI TAIKĄ MYLIČIŲ ŽMONIŲ ŠALIS. Indija stovi ant trijų įstatymų leidžiamosios, vykdomosios ir teisminės valdžios ramsčių. Indija yra graži taiką mylinčių žmonių šalis. stačiakampių koordinačių svarba. Naudojimasis jaučių vežimu yra įprastas vaizdas kaime atliekant agrarinius darbus. Tai pavyzdinio failo pabaiga.
Išvestyje rodomos visos kitos eilutės, išskyrus eilutę, kurioje yra žodis „išteklius“.
Atitinkančios eilutės įvykių skaičiavimas
Išvestis grep
komanda paprastai yra labai ilga, jei faile yra daug duomenų. Kuo daugiau atitikmenų, tuo ilgesni yra išėjimai grep
komandą. „Linux“ suteikia jums parinktį, kurioje galite rodyti atitikmenų skaičių.
Sintaksė:
grep -i -c [eilutė] [failo pavadinimas]
Pavyzdys:
grep -i -c india pavyzdys.txt
Išvestis:
gaurav@ubuntu:~/workspace$ grep -i -c india sample.txt 4 gaurav@ubuntu:~/workspace$
Čia išvestis yra skaičius, kuris yra žodžio „Indija“ atvejų skaičius faile sample.txt.
PASTABA: Aš naudojau -i
galimybė kiekviename pavyzdyje tiesiog būti saugi dėl didžiųjų ir mažųjų raidžių jautrumo problemos. Jei esate tikri dėl ieškomo žodžio didžiosios ir mažosios raidės, galite drąsiai praleisti -i
variantas.
Išvada
Mes išmokome pagrindinius naudojimo būdus grep
komandą Linux sistemose šioje pamokoje. Taip pat išmokome rodyti įvairų turinį, kuris geriausiai atitinka mūsų poreikius ir neapkrauti terminalo krūvomis eilučių. grep
komanda tikrai sutaupys laiko, jei naudojama dideliems duomenų rinkiniams nuskaityti.