Už jste použili grep? Většinu času zvládne většinu triku základní grep. Grep však nabízí spoustu způsobů, jak provést vyhledávání a doladit výstup na použitelnější verzi. V tomto článku se podívejme na použití příkazu grep.
Použití Grep
Ověření existence
Pokud používáte jakýkoli distribuční systém Linux, máte již nainstalován grep. Spusťte následující příkaz v terminálu.
grep - verze
Tento příkaz se používá k zobrazení verze aktuálně nainstalovaného grep. Nyní potřebujeme demo soubor. V mém případě vygeneruji textový soubor, který obsahuje všechny nainstalované balíčky v mém systému.
Základy
Základní použití grepu se řídí následující strukturou.
grepNebo pro snazší pochopení použijte tento.
grepV tomto případě grep provede vyhledávání v souboru a vytiskne všechny řádky, které obsahují vzor (hledaný výraz).
grep python ~ / Desktop / PackageList.txt
Grep prohledal soubor „PackageList.txt “Generoval jsem dříve a vytiskl všechny řádky, které obsahují„ python “.
Stejnou operaci lze provést jiným způsobem. Podívejte se na následující příklad.
cat ~ / Desktop / PackageList.txt | grep python
Tady jsem pomocí příkazu „cat“ odeslal obsah souboru „PackageList.txt ”na grep. Pomocí výstupu cat provedl grep vyhledávání a vytiskl řádky, které obsahují hledaný výraz.
Nyní přichází zábavná věc. Můžete doslova skládat více příkazů grep právě takhle.
cat ~ / Desktop / PackageList.txt | grep - | grep p | grep python
První grep filtruje dolů na řádky s pomlčkou, druhý filtr dolů na řádky s p a poslední grep filtruje dolů na řádky s pythonem. Dává smysl?
Citlivost písmen
Při vyhledávání je hlavní otázkou citlivost na velká a malá písmena. Ve výchozím nastavení grep rozlišuje velká a malá písmena.
Například vyhledávání výrazu „Python“ nezobrazí žádný výsledek.
cat ~ / Desktop / PackageList.txt | grep Python
Chcete-li, aby velká a malá písmena v grepu nebyla citlivá, přidejte následující možnost.
cat ~ / Desktop / PackageList.txt | grep -i Python
Hledání souborů
Řekněme, že máte adresář s mnoha textovými soubory. Vaším cílem je identifikovat soubory, které obsahují nebo neobsahují vzor (hledaný výraz).
Tuto metodu považuji za velmi užitečnou při hledání v hromadě souborů protokolu. Jelikož nemám čas otevírat a ručně kontrolovat každý jednotlivý soubor, musím udělat grep, aby to udělal za mě.
Pro výpis souborů obsahujících shodu použijte příznak „-l“.
grep -l
Jak naznačuje výsledek, výraz „python“ je přítomen ve všech 3 souborech v adresáři „Desktop“.
Pro výpis souborů bez jakékoli shody použijte příznak „-L“.
grep -L
"Žádná shoda.txt “je jediný soubor, který neobsahuje výraz„ python “.
Obrácené vyhledávání
Výchozí chování grepu je tisknout pouze řádky se shodným vzorem vpravo? Je čas tento proces zvrátit. Tentokrát budeme tisknout pouze řádky BEZ odpovídajícího vzoru.
Stačí předat možnost „-v“ na grep.
cat ~ / Desktop / PackageList.txt | grep -i -v Python
Tisk řádků před / po zápase
Ve výchozím nastavení grep vytiskne pouze řádek, který odpovídá vzoru hledání. Pomocí této techniky můžete říct, že grep má tisknout řádky také před / po zápase.
Pro tisk řádků před zápasem použijte následující strukturu.
grep -B
Zde je 5 řádek čísla, který grep vytiskne PŘED odpovídajícím řádkem.
Pro tisk řádků po shodě použijte následující.
grep -A
Co takhle tisknout před a po shodném řádku? V takovém případě použijte příznak „-C“.
grep -C
Číslo řádku
Když grep zobrazuje výstup, nezmiňuje číslo řádku. Pro přidružená čísla řádků použijte příznak „-n“.
grep -n
Jediné slovo
Pokud je použit příznak „-w“, bude grep považovat vzor za celé slovo.
grep -w
Omezení vyhledávání grep
Grep umožňuje určit počet řádků, které se mají v souboru prohledat. Tato metoda je užitečná, pokud pracujete s velkým souborem (jako je systémový protokol). Použijte příznak „-m“.
grep -m
Rekurzivní vyhledávání
Je to jedna z nejužitečnějších funkcí, které grep nabízí pro těžké používání. Grep může rekurzivně prohledávat adresář a najít všechny shody ze všech souborů, kterým čelí.
grep -RNebo,
grep -r
Často používám tuto rekurzivní funkci spolu s příznakem „-l“.
Tichý režim
Grep lze spustit v „tichém“ režimu. Když běží v „tichém“ režimu, grep nevytiskne do terminálu žádný výstup. Místo toho vrátí 0 (alespoň byla nalezena shoda) nebo 1 (nebyla nalezena žádná shoda).
grep -qecho $?
Regulární výraz
Grep také umožňuje vyhledávání regulárních výrazů (regulárních výrazů). To přidává zcela novou úroveň složitosti a použitelnosti grepu jako vyhledávacího nástroje.
Například můžete použít závorky k vyhledání výrazů „příliš“ a „dva“ současně.
cat ~ / Desktop / gpl-3.0.txt | grep t [wo] o
Tento další příklad vytiskne řádek, pouze pokud dojde ke shodě na samém začátku řádku.
grep ^ GNU ~ / Desktop / gpl-3.0.txt
Pokud jde o shodu s koncem, použijte tento.
pozdravit vás $ ~ / Desktop / gpl-3.0.txt
Pokud chcete použít Perl regex, použijte příznak „-P“. Bude to považovat za vzor jako Perl regex.
grep -PZávěrečné myšlenky
Grep nabízí spoustu způsobů, jak přizpůsobit funkci vyhledávání. Dostupnost regexu otevírá zcela nový horizont pro potenciální využití grepu. Skvělá věc je, že můžete použít obecný i Perl regex; podle toho, s čím se budete cítit pohodlně.
Nejpodrobnější vysvětlení najdete vždy na manuálové stránce.
muž grep
Na zdraví!