Pochopenie príkazu grep s praktickými príkladmi na jednoduché filtrovanie a zobrazenie obsahu súboru
GREP
znamená „globálna tlač regulárnych výrazov“. Je to užitočná pomôcka príkazového riadka poskytovaná systémom Linux na vyhľadávanie textového riadku, ktorý zodpovedá vzoru poskytnutému používateľom.
grep
berie vstup od používateľa vo forme reťazcov alebo slov, ktoré si používateľ želá hľadať v konkrétnom súbore. Príkaz potom skontroluje súbor zadaný používateľom pre tento vzor a potom vráti riadky, ktoré sa zhodujú s poskytnutým vzorom.
Odvádza vynikajúcu prácu tým, že filtruje obsah súboru, čím nám uľahčuje hľadanie konkrétneho obsahu v jednom alebo viacerých súboroch súčasne.
V tomto článku sa pozrime na fungovanie grep
s niekoľkými praktickými príkladmi podrobne.
Dostupné možnosti s grep
príkaz
Toto sú niektoré zo základných možností, ktoré budete často používať s grep
príkaz.
Možnosť | Popis |
-i | Pre vyhľadávanie bez ohľadu na veľkosť písmen |
-r | Na rekurzívne vyhľadávanie všetkých súborov v zadanom adresári a jeho podadresároch |
-c | Zobrazenie celkového počtu zobrazení reťazca |
-v | Na zobrazenie nezhodujúcich sa riadkov |
-w | Filter pre konkrétne slovo používané samostatne |
Pomocou grep
príkaz
grep
príkaz sa zvyčajne používa s potrubím (|
) užitočnosť. Môže byť implementovaný pomocou shell pipe, keď ho chcete použiť s niektorými inými príkazmi Linuxu. Hoci, grep
možno použiť aj samostatne bez potrubia (|
) užitočnosť.
Pozrime sa na niektoré zo základných syntaxí grep
príkaz s obslužným programom potrubia a bez neho.
Najprv vám ukážem vzorový textový súbor, ktorý použijem na ilustráciu grep
príkaz.
INDIA JE KRÁSNA KRAJINA ĽUDÍ MILUJÚCICH MIER. India stojí na troch pilieroch zákonodarnej moci, výkonnej moci a súdnictva. India je krásna krajina mierumilovných ľudí. India sa stará o ľudí, pretože jej kartézske súradnice sú dôležité pre všetky karteziánske súradnice. Nasledujú dva prázdne riadky. V obci je bežným javom pri agrárnych prácach volský povoz. Toto je koniec vzorového súboru.
grep
používa sa s potrubím ( | )užitočnosť
grep
príkaz možno implementovať spolu s inými príkazmi Linuxu pomocou shell pipe. Napríklad pomocou kat
príkaz na zobrazenie obsahu súboru, ale súčasne výstup výstupu pomocou príkazu grep
na zobrazenie iba obsahu, ktorý chcete vidieť. To bude jasnejšie, keď si prejdeme príklad.
Syntax:
[príkaz] | grep [reťazec]
Príklad:
vzor mačky.txt | zákonodarný zbor grep
Tu som použil kat
príkaz na zobrazenie niektorých riadkov zo súboru „sample.txt“. Zobrazia sa len tie riadky, ktoré obsahujú slovo „legislatíva“, a ostatné riadky sa budú ignorovať.
Výkon:
gaurav@ubuntu:~/workspace$ cat sample.txt | grep legislature India stojí na troch pilieroch zákonodarnej moci, výkonnej moci a súdnictva. gaurav@ubuntu:~/pracovný priestor$
grep
používa sa bez potrubia ( | )užitočnosť
grep
možno dokonca použiť priamo ako samostatný príkaz bez použitia potrubia ( |
) užitočnosť.
Syntax:
grep [string_to_be_searched] [názov súboru]
Príklad:
grep India sample.txt
Výkon:
India je krásna krajina mierumilovných ľudí. India sa stará o ľudí ako o svoj zdroj
Použil som teda grep
priamo na filtrovanie riadkov, ktoré obsahujú reťazec „India“ z textového súboru „sample.txt“.
Pomocou vyhľadávania bez rozlišovania malých a veľkých písmen grep
príkaz
Linux je veľmi opatrný, pokiaľ ide o rozlišovanie malých a veľkých písmen, keď spúšťame príkazy na termináli. To si vyžaduje, aby používateľ dával pozor na veľkosť písmen v reťazci vloženom do príkazu.
Pozrime sa na to na príklade.
grep peace sample.txt
V tomto prípade nedostaneme výstup, pretože vo vzorovom súbore neexistuje slovo ako „mier“. Máme slovo „mier“ s veľkým „P“. Slovo je rovnaké, ale keď použijeme grep
príkaz bez akejkoľvek možnosti, hľadá presnú zhodu v súbore bez ohľadu na zmeny veľkosti písmen.
Aby ste sa vyhli tejto nejednoznačnosti, môžete jednoducho použiť -i
možnosť, ktorá doslova hovorí grep
príkaz "Zabudnite na prípad, do ktorého som vložil reťazec, a jednoducho vyhľadajte všetky zodpovedajúce vzory v súbore."
Syntax:
grep -i [reťazec] [názov súboru]
Príklad:
grep -i mier ukážka.txt
Výkon:
INDIA JE KRÁSNA KRAJINA ĽUDÍ MILUJÚCICH MIER. India je krásna krajina mierumilovných ľudí.
Všetky zhodné riadky sa zobrazia bez ohľadu na prípad, v ktorom je zhodný reťazec.
Pomocou rekurzívneho vyhľadávania grep
príkaz
The -r
voľba vyhľadá všetky súbory v adresári a všetkých jeho podadresároch, ktoré zodpovedajú vzoru reťazca poskytnutému používateľom v príkaze.
Syntax:
grep -i -r [reťazec] [cesta_súboru]
Príklad:
grep -i -r kocúr /domov/gaurav/pracovný priestor
Reťazec je tu „tomcat“ a bude sa hľadať v pracovnom priestore adresára. Všetky podadresáre a súbory v adresári „workspace“ budú tiež naskenované, aby sa zhodovali s poskytnutým vzorom reťazcov.
Výkon:
./context_log.policy:// catalina.policy – Povolenia bezpečnostnej politiky pre Tomcat 7 ./context_log.policy:// Poznámka: Ak je tomcat-juli.jar v ${catalina.base} a nie 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: povolenie java.lang.RuntimePermission "accessClassInPackage.org.apache.tomcat.websocket.server"; ./context.xml: ./catalina.properties:# - JAR JAR pre Tomcat Bootstrap ./catalina.properties:# - JAR pre Tomcat API ./catalina.properties:# - JAR pre Tomcat ./catalina.properties:# - Bežné iné ako Tomcat JARs ./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:
POZNÁMKA: Počas používania -r
možnosť s grep
musíme zadať cestu k súboru a nie názov súboru
Vyhľadávanie celých slov iba s grep
príkaz
Mnohokrát sa stane, že budete hľadať jedno slovo, ale nakoniec zaplníte svoj terminál zodpovedajúcimi riadkami, ktoré obsahujú vaše zodpovedajúce slovo, ale nie ako samostatné slovo. Môžete vidieť riadky, ktoré obsahujú nejaké slová, ktorých podčasťou je reťazec, ktorý ste zadali.
Si z toho zmätený? Nebojte sa, je to oveľa jednoduchšie pochopiť, keď získate príklad.
Príklad:
Tu chcem vyhľadať jednotlivé slovo „košík“ a zobraziť všetky riadky zodpovedajúce tomuto slovu v súbore „sample.txt“.
grep -i cart sample.txt
Výkon:
Dôležitosť karteziánskych súradníc všetkých kartézskych súradníc. používanie volského povozu je v dedine bežným javom pri agrárnych prácach. Voz sa stratil, keď ho chlapec nechal voľný.
Vo výstupe si môžete všimnúť, že slovo „karteziánsky“ obsahuje aj slovo „vozík“, a teda riadky obsahujúce slovo „karteziánsky“ sú zobrazené aj napriek tomu, že ich nechceme zobrazovať.
Môžete použiť -w
možnosť s grep
príkaz vyriešiť túto nejasnosť.
Syntax:
grep -i -w [reťazec] [názov súboru]
Príklad:
grep -i -w košík vzorka.txt
Výkon:
V obci je bežným javom pri agrárnych prácach volský povoz. Vozík zmizol, keď ho chlapec nechal voľný.
Teraz, keď ste použili –w
možnosť s grep
získate iba riadky, v ktorých sa slovo „košík“ používa ako celok.
Obrátené vyhľadávanie pomocou grep
príkaz
grep
príkaz možno použiť aj opačným spôsobom. Môžeme použiť grep
príkaz opačne skrytím zodpovedajúcich riadkov a zobrazením iba riadkov, kde sa zhoda nenašla. Môžete to urobiť pomocou -v
možnosť s grep
príkaz.
Syntax:
grep -i -v [reťazec] [názov súboru]
Príklad:
grep -i -v zdroj sample.txt
Výkon:
INDIA JE KRÁSNA KRAJINA ĽUDÍ MILUJÚCICH MIER. India stojí na troch pilieroch zákonodarnej moci, výkonnej moci a súdnictva. India je krásna krajina mierumilovných ľudí. kartézske súradnice dôležitosť všetkých karteziánskych súradníc. V obci je bežným javom pri agrárnych prácach volský povoz. Toto je koniec vzorového súboru.
Vo výstupe sa zobrazia všetky ostatné riadky okrem riadku, ktorý obsahuje slovo „zdroj“.
Počítanie výskytov zhodného reťazca
Výstup z grep
príkaz je zvyčajne veľmi dlhý, ak sú údaje v súbore rozsiahle. Čím viac zápasov, tým dlhšie sú výstupy grep
príkaz. Linux vám poskytuje možnosť, kde si môžete zobraziť počet výskytov zhody.
Syntax:
grep -i -c [reťazec] [názov súboru]
Príklad:
grep -i -c india sample.txt
Výkon:
gaurav@ubuntu:~/workspace$ grep -i -c india sample.txt 4 gaurav@ubuntu:~/workspace$
Tu je výstupom číslo, ktoré predstavuje počet výskytov slova „India“ v súbore sample.txt.
POZNÁMKA: Použil som -i
možnosť v každom príklade, aby ste boli v bezpečí s problémom rozlišovania malých a veľkých písmen. V prípade, že ste si istí veľkosťou písmen v hľadanom slove, pokojne môžete vynechať -i
možnosť.
Záver
Naučili sme sa základné využitie grep
príkaz na systémoch Linux v tomto návode. Naučili sme sa tiež zobrazovať rôzny obsah, ktorý najlepšie vyhovuje našim požiadavkám a nezapĺňať terminál množstvom liniek. grep
príkaz určite šetrí čas, ak sa použije na skenovanie veľkých súborov údajov.