Pochopení příkazu grep s praktickými příklady pro snadné filtrování a zobrazení obsahu souboru
GREP
znamená „Globální tisk regulárních výrazů“. Je to užitečná utilita příkazového řádku poskytovaná Linuxem k vyhledání textového řádku, který odpovídá vzoru poskytnutému uživatelem.
grep
přebírá vstup od uživatele ve formě řetězců nebo slov, která si uživatel přeje hledat v konkrétním souboru. Příkaz poté zkontroluje soubor určený uživatelem pro tento vzor a poté vrátí řádky, které odpovídají poskytnutému vzoru.
Odvádí vynikající práci tím, že filtruje obsah souboru, čímž nám usnadňuje hledání konkrétního obsahu v jednom nebo více souborech současně.
V tomto článku se podíváme na fungování grep
velení s několika praktickými příklady podrobně.
Dostupné možnosti s grep
příkaz
Toto jsou některé ze základních možností, které budete často používat s grep
příkaz.
Volba | Popis |
-i | Pro vyhledávání bez rozlišení velkých a malých písmen |
-r | Chcete-li rekurzivně vyhledat všechny soubory v zadaném adresáři a jeho podadresářích |
-C | Zobrazení celkového počtu zobrazení řetězce |
-proti | Chcete-li zobrazit neodpovídající řádky |
-w | Filtr pro toto konkrétní slovo používané samostatně |
Za použití grep
příkaz
grep
příkaz se obvykle používá s roura (|
) užitečnost. Může být implementován pomocí shell pipe, když jej chcete použít s některými jinými příkazy Linuxu. Ačkoli, grep
lze použít i jednotlivě bez trubky (|
) užitečnost.
Podívejme se na některé základní syntaxe grep
příkaz s obslužným programem potrubí a bez něj.
Nejprve vám ukážu ukázkový textový soubor, který použiji k ilustraci grep
příkaz.
INDIE JE KRÁSNÁ ZEMĚ LIDÍ MILUJÍCÍ MÍR. Indie stojí na třech pilířích zákonodárné, výkonné a soudní. Indie je krásná země mírumilovných lidí. Indie se stará o lidi, protože její zdroje jsou kartézské souřadnice důležitosti všech kartézských souřadnic. Následují dva prázdné řádky. používání volského povozu je ve vesnici běžným jevem pro agrární práce. Toto je konec ukázkového souboru.
grep
používá se s potrubím ( | )užitečnost
grep
příkaz lze implementovat spolu s dalšími příkazy Linuxu pomocí shell potrubí. Například pomocí kočka
příkaz k zobrazení obsahu souboru, ale zároveň k propojení výstupu pomocí grep
příkaz pro zobrazení pouze obsahu, který chcete vidět. To bude jasnější, když si projdeme příklad.
Syntax:
[příkaz] | grep [řetězec]
Příklad:
cat sample.txt | zákonodárný sbor grep
Zde jsem použil kočka
příkaz k zobrazení některých řádků ze souboru ‚sample.txt‘. Mají se zobrazit pouze ty řádky, které obsahují slovo „legislativa“, a ostatní řádky ignorovat.
Výstup:
gaurav@ubuntu:~/workspace$ cat sample.txt | grep legislature india stojí na třech pilířích legislativy, exekutivy a soudnictví. gaurav@ubuntu:~/workspace$
grep
používá se bez potrubí ( | )užitečnost
grep
lze dokonce použít přímo jako samostatný příkaz bez použití potrubí ( |
) užitečnost.
Syntax:
grep [string_to_be_searched] [název souboru]
Příklad:
grep Indie sample.txt
Výstup:
Indie je krásná země mírumilovných lidí. Indie se stará o lidi jako o zdroj
Použil jsem tedy grep
příkazem přímo filtrovat řádky, které obsahují řetězec ‚Indie‘ z textového souboru ‚sample.txt‘.
Použití vyhledávání bez rozlišení malých a velkých písmen grep
příkaz
Linux je velmi opatrný, pokud jde o rozlišení velkých a malých písmen, když spouštíme příkazy na terminálu. To vyžaduje, aby si uživatel dával pozor na velikost písmen řetězce vloženého do příkazu.
Podívejme se na to na příkladu.
grep peace sample.txt
V tomto případě nedostaneme výstup, protože v ukázkovém souboru neexistuje slovo jako „mír“. Máme slovo „Mír“ s velkým „P“. Slovo je stejné, ale když použijeme grep
příkaz bez jakékoli možnosti hledá přesnou shodu v souboru bez ohledu na změny velikosti písmen.
Abyste se vyhnuli této nejednoznačnosti, můžete jednoduše použít -i
možnost, která doslova říká grep
příkaz "zapomeňte na případ, do kterého jsem vložil řetězec, a hledejte všechny odpovídající vzory v souboru."
Syntax:
grep -i [řetězec] [název souboru]
Příklad:
grep -i peace sample.txt
Výstup:
INDIE JE KRÁSNÁ ZEMĚ LIDÍ MILUJÍCÍ MÍR. Indie je krásná země mírumilovných lidí.
Všechny odpovídající řádky jsou zobrazeny bez ohledu na případ, ve kterém je odpovídající řetězec.
Pomocí rekurzivního vyhledávání grep
příkaz
The -r
volba vyhledá všechny soubory v adresáři a všechny jeho podadresáře, které odpovídají vzoru řetězce poskytnutému uživatelem v příkazu.
Syntax:
grep -i -r [řetězec] [cesta_souboru]
Příklad:
grep -i -r kocour /home/gaurav/workspace
Řetězec je zde ‚tomcat‘ a bude vyhledán v pracovním prostoru adresáře. Všechny podadresáře a soubory v adresáři ‚workspace‘ budou také naskenovány, aby odpovídaly zadanému vzoru řetězce.
Výstup:
./context_log.policy:// catalina.policy – Oprávnění zásad zabezpečení pro Tomcat 7 ./context_log.policy:// Poznámka: Pokud je tomcat-juli.jar v ${catalina.base} a 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: oprávnění java.lang.RuntimePermission "accessClassInPackage.org.apache.tomcat.websocket.server"; ./context.xml: ./catalina.properties:# - JAR pro Tomcat Bootstrap ./catalina.properties:# - JAR pro Tomcat API ./catalina.properties:# - JAR pro Tomcat ./catalina.properties:# - Běžné soubory jiných než 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: Při používání -r
možnost s grep
musíme zadat cestu k souboru a ne název souboru
Hledání celých slov pouze s grep
příkaz
Mnohokrát se stane, že budete hledat jedno slovo, ale nakonec zaplníte svůj terminál odpovídajícími řádky, které obsahují vaše odpovídající slovo, ale ne jako samostatné slovo. Můžete vidět řádky, které obsahují některá slova, jejichž podčástí je řetězec, který jste zadali.
Jste s tím zmatení? Nebojte se, je to mnohem snazší pochopit, jakmile získáte příklad.
Příklad:
Zde chci vyhledat jednotlivé slovo ‚košík‘ a zobrazit všechny řádky odpovídající tomuto slovu v souboru ‚sample.txt‘.
grep -i cart sample.txt
Výstup:
Kartézské souřadnice důležitost všech kartézských souřadnic. používání volského povozu je ve vesnici běžným jevem při agrárních pracích Povoz zmizel, když ho chlapec nechal volně.
Ve výstupu můžete pozorovat, že slovo ‚kartézský‘ obsahuje také slovo ‚vozík‘, a proto se zobrazují i řádky obsahující slovo ‚kartézský‘, i když je nechceme zobrazovat.
Můžete použít -w
možnost s grep
příkaz k vyřešení této nejasnosti.
Syntax:
grep -i -w [řetězec] [název souboru]
Příklad:
grep -i -w košík vzorek.txt
Výstup:
používání volského povozu je ve vesnici běžným jevem pro agrární práce. Vozík zmizel, když ho chlapec nechal volně.
Nyní, když jste použili –w
možnost s grep
získáte pouze řádky, ve kterých je slovo ‚košík‘ použito jako celek.
Inverzní vyhledávání pomocí grep
příkaz
grep
příkaz lze také použít obráceným způsobem. Můžeme použít grep
příkaz naopak skrytím odpovídajících řádků a zobrazením pouze řádků, kde shoda nebyla nalezena. Můžete to udělat pomocí -proti
možnost s grep
příkaz.
Syntax:
grep -i -v [řetězec] [název souboru]
Příklad:
grep -i -v zdroj sample.txt
Výstup:
INDIE JE KRÁSNÁ ZEMĚ LIDÍ MILUJÍCÍ MÍR. Indie stojí na třech pilířích zákonodárné, výkonné a soudní. Indie je krásná země mírumilovných lidí. kartézské souřadnice důležitost všech tých kartézských souřadnic. používání volského povozu je ve vesnici běžným jevem pro agrární práce. Toto je konec ukázkového souboru.
Ve výstupu jsou zobrazeny všechny ostatní řádky kromě řádku, který obsahuje slovo „zdroj“.
Počítání výskytů shodného řetězce
Výstup z grep
příkaz je obvykle velmi dlouhý, pokud jsou data v souboru rozsáhlá. Čím více zápasů, tím delší jsou výstupy grep
příkaz. Linux vám nabízí možnost, kde si můžete zobrazit počet výskytů shody.
Syntax:
grep -i -c [řetězec] [název souboru]
Příklad:
grep -i -c indie sample.txt
Výstup:
gaurav@ubuntu:~/workspace$ grep -i -c india sample.txt 4 gaurav@ubuntu:~/workspace$
Zde je výstupem číslo, které je počtem výskytů slova ‚Indie‘ v souboru sample.txt.
POZNÁMKA: Použil jsem -i
možnost v každém příkladu být v bezpečí s problémem rozlišování malých a velkých písmen. V případě, že jste si jisti velikostí písmen slova, které hledáte, můžete směle vynechat -i
volba.
Závěr
Naučili jsme se základní použití grep
příkaz na systémech Linux v tomto kurzu. Naučili jsme se také zobrazovat různý obsah, který nejlépe vyhovuje našim požadavkům a nezahlcovat terminál spoustou linek. grep
příkaz bude jistě šetřit čas, pokud se použije pro skenování velkých souborů dat.