GNU/Linux >> Znalost Linux >  >> Linux

Jak dobře využít příkaz „grep“.

Systémy Linux a UNIX přicházejí s příkazem shellu známým jako „grep“. Toto jednoduše hledá určitý text nebo vzor v souboru nebo v celém adresáři. Nejběžnější použití je pro rychlé vyhledávání v souboru pro výskyty vzoru, který může být v prostém textu nebo ve formě regulárního výrazu.

Zde budou použité vzory spíše jednoduchý text než regulární výrazy. ​Tento článek vám ukáže, jak používat grep při prohledávání textových souborů pro jeden nebo více vzorů. Jak z vyhledávání odstranit řádky obsahující určité vzory a jak spouštět více příkazů grep pomocí potrubí pro pokročilejší filtrování.

​Základní přehled „grep“

​Podívejte se na výstup terminálu pro tyto příkazy:

/etc$ grep unix group
/etc$ grep -n unix group
/etc$ grep -w unix group
/etc$ grep -r -s unix . 

Na tomto snímku obrazovky používám grep k hledání slova „unix“ v souboru /etc/group. Jako výsledek vrátí všechny výskyty unix_allsort (uživatelské jméno pro tento počítač). Druhý příkaz udělal totéž, ale s parametrem -n ukazuje, který řádek byl vzor nalezen v souboru.

Třetí příkaz se mírně liší parametrem „-w“, který říká grepu, aby odpovídal celému slovu, nikoli jednoduchému kousku textu. Protože soubor skupiny neměl „unix“ jako celé slovo, nebyl žádný výstup.

Čtvrtý příkaz je jiný. První parametr „-r“ říká grepu, aby prohledával adresář rekurzivně. Adresář je v tomto případě aktuální (/etc), označený „.“. Další parametr ‚-s‘ říká grepu, aby se vyhnul hlášení jakýchkoli chyb, jako jsou chyby „Permission Denied“ do výstupu, aby nedošlo ke znečištění výstupu chybami. Čtvrtý příkaz grep tedy vypíše všechny výskyty „unixu“ ve všech souborech v /etc a jeho podadresářích, kde jsou jakékoli chyby jednoduše ignorovány.

Více vzorů

​Chcete-li hledat více než jeden vzor, ​​jednoduše vytvořte textový soubor obsahující seznam vzorů, jeden na každém řádku, které chcete hledat v souboru nebo adresáři, a použijte parametr -f k načtení souboru obsahujícího vzory.$ grep -f ~/groups.txt /etc/group

Tento soubor obsahuje tyto vzory k vyhledání:

unix_allsort
video
sudo

Všechny řádky obsahující alespoň jeden z těchto vzorů se zobrazí na výstupu terminálu.

Přesměrování výstupu

Pamatujte, že použití grep na velký soubor nebo dokonce více souborů může produkovat velké množství výstupu. Takže je dobré nasměrovat výstup na příkaz „méně“, abyste mohli procházet výstupem v celém rozsahu. $ grep -r -n -f filter.txt zdroje/js | méně ​Nebo přesměrujte jeho výstup do textového souboru k zobrazení později. $ grep -r -n -f filter.txt resources/js> ~/result.txt  

​Něco trochu pokročilejšího

Existuje trik, který někdy používám s potrubím k vyhledávání vzorů a odfiltrování nežádoucího výstupu. Příkladem bylo propojení výstupu z grep pro zobrazení v „méně“.

Dva příklady používající protokol jádra (/var/log/kern.log). Podívejte se na tento obrázek:

To, co jsem udělal, je použití grep k vypsání všech řádků obsahujících celé slovo „pci“ (použitím parametru -w k nalezení pouze celých slov), převedení výstupu do jiného příkazu grep k odfiltrování jakýchkoliv vzorů, které jsem nechtěl vidět ve výstupu.

Vzorce, které jsem odfiltroval, byly „ohci-pci“ a „ehci-pci“.

Na tomto obrázku jsem nejprve odfiltroval řádky, které obsahovaly vzory, které jsem nechtěl, a poté jsem ve výstupu hledal, co jsem chtěl. Také jsem přidal další vzor k odfiltrování, „pci=nocrs“. V grepu je více funkcí, než které jsou popsány zde, takže pokud plánujete používat grep pravidelně, věnujte si čas a prozkoumejte, co dokáže a jak lépe použij to. Podívejte se také na pdfgrep pro vyhledávání v souborech PDF.

Závěr

Nástroj jako grep je skutečně extrémně užitečný, nemluvě o nepostradatelnosti, pro prohledávání velkého množství textových souborů, skriptů a zejména protokolů pro konkrétní vzory se značnou lehkostí. Můžete hledat jeden nebo několik vzorů v jednom souboru nebo v mnoha souborech, nebo je použít k odfiltrování řádků ze souborů obsahujících tyto vzory.

Můžete dokonce použít potrubí pro složitější vyhledávání a filtrování pomocí grep. Stojí za to se dozvědět více o tomto vynikajícím příkazu, zejména o některých jeho pokročilých funkcích.


Linux
  1. Jak používat Linuxový příkaz grep

  2. Jak používat příkaz Grep k vyhledání textu v souborech

  3. Jak zajistit, aby příkaz grep vrátil celý odpovídající řádek

  1. Jak používat Telnet ve Windows

  2. Jak používat příkaz mkdir k vytvoření nebo vytvoření adresáře Linux

  3. Jak používat Su Command v Linuxu

  1. Jak používat příkaz grep v Linuxu/UNIXu

  2. Jak používat příkaz Disown v Linuxu

  3. Jak používat příkaz Linux SS