GNU/Linux >> Znalost Linux >  >> Linux

Výukový program příkazu Grep s příklady pro začátečníky

V tomto tutoriálu se seznámíme s "grep" příkaz. Grep znamená G lobální r pravidelné e výraz p otisknout. Jak název napovídá, Grep se používá k vyhledávání textových souborů s regulárními výrazy (krátce regulární výraz ). Vytiskne řádky odpovídající danému vzoru v textovém souboru. Pokud není zadán žádný soubor, grep rekurzivně prohledá daný vzor v souborech v aktuálním adresáři. Grep má dvě varianty, a to egrep a fgrep . Tyto varianty jsou zastaralé, ale jsou poskytovány z důvodu zpětné kompatibility. Místo použití "grep -E" a "grep -F" můžete použít "egrp" a "fgrep". Bez dalších okolků můžeme začít.

Příklady příkazů Grep

Mám soubor s názvem soubor.txt s nějakými náhodnými slovy. Pojďme se podívat na soubor.txt:

$ cat file.txt
ostechnix
Ostechnix
o$technix
linux
linus
unix
technology
hello world
HELLO world

Chcete-li zahájit vyhledávání, zadejte grep a poté co hledáte a odkud hledáte. Například budu hledat řetězec "nix" v souboru.txt. K tomu spustím:

$ grep nix file.txt

Ukázkový výstup:

ostechnix
Ostechnix
o$technix
unix

Jak vidíte ve výše uvedeném výstupu, dostali jsme dvě slova, která obsahují odpovídající vzor „nix“. Pokud hledaný řetězec obsahuje dvě slova, uveďte je v jednoduchých uvozovkách, jak je uvedeno níže.

$ grep 'hello world' file.txt 
hello world

Můžete také použít -n příznak pro zobrazení čísel řádků ve výstupu:

$ grep -n nix file.txt

Ukázkový výstup:

1:ostechnix
2:Ostechnix
3:o$technix
6:unix

To může být užitečné, když pracujete s opravdu dlouhým kódem.

Upozorňujeme, že grep rozlišuje velká a malá písmena . Například když hledáte "os" , nebude zobrazovat řádky obsahující velká písmena, tj. Os.

Zkontrolujte následující příklad.

$ grep os file.txt 
ostechnix

Ale v file.txt mám další slovo s názvem "Ostechnix", ale grep ho neuvedl.

Pokud však chcete ignorovat malá a velká písmena, můžete použít "-i" příznak jako níže.

$ grep -i os file.txt 
ostechnix
Ostechn1x
$ grep -i 'hello world' file.txt 
hello world
HELLO world

Nyní se grep nestaral o malá a velká písmena a dostali jsme slova, která ve výsledku obsahují velká i malá písmena.

Můžeme také převést výstup příkazu do grep. Podívejte se na následující příklad.

$ cat file.txt | grep os
ostechnix

Nyní se podívejme, co máme. Výstup souboru.txt je přenesen do grep a slova obsahující písmena "os" v souboru.txt byla zobrazena.

Můžeme také použít některé speciální znaky nebo regulární výrazy v grep.

  • ^ - hledat na začátku řádku.
  • $ - hledat na konci řádku.
  • . - Vyhledejte libovolný znak.

Dovolte mi ukázat vám příklad, abyste pochopili, kde a jak tyto speciální znaky používat.

Už víte, že můžeme hledat slova obsahující řetězec "tech" jako níže.

$ grep tech file.txt
ostechnix
Ostechnix
o$technix
technology

Ale co kdybyste chtěli jen hledat řádky, které začínají pouze slovem „tech“. Nechcete zobrazit všechna slova obsahující řetězec, ale pouze slova, která mají na začátku řetězec „tech“. Je to také možné. Zde se hodí speciální znaky.

Chcete-li vyhledat slova, která odpovídají vzoru „tech“ na začátku řádku v souboru, spusťte:

$ grep ^tech file.txt
technology

Podobně můžeme hledat slova, která končí konkrétním písmenem (písmeny), například "x" , jako níže.

$ grep x$ file.txt
ostechnix
Ostechnix
o$technix
linux
unix

Slova, která obsahují jakýkoli znak, můžete také najít pomocí . (tečka).

Například hledejme jakékoli slovo, které má "n" v souboru.

$ grep .n file.txt
ostechnix
Ostechnix
o$technix
linux
linus
unix
technology

Nyní byste měli mít základní znalosti o použití grep. Pojďme se naučit další dvě varianty, konkrétně egrep a fgrep .

Příklady příkazů Egrep

egrep znamená e rozšířený grep . Je to podobné jako "grep -E" příkaz. Udělá všechny věci, které udělá grep. Poskytuje však některé další funkce, jako je použití komplikovaného regulárního výrazu, než běžný příkaz grep ihned po vybalení.

Můžeme například hledat jakákoli slova, která začínají buď "l" nebo "o" .

Pamatujte, že k vyhledávání slov na začátku řádku používáme symbol stříšky (^). Náš příkaz pro výše uvedený dotaz tedy bude:

$ egrep '^(l|o)' file.txt
ostechnix
o$technix
linux
linus

Vidět? Máme všechna slova, která začínají na „l“ nebo „o“. Vezměte prosím na vědomí, že normální příkaz grep to nedokáže.

Podobně můžeme hledat řádky, které začínají libovolným rozsahem znaků mezi „l“ až „u“. To znamená, že dostaneme řádky, které začínají na l, m, n, o, p, q, r, s, t a u. Vše ostatní bude z výsledku vynecháno.

$ egrep '^[l-u]' file.txt
ostechnix
o$technix
linux
linus
unix
technology

Vezměte prosím na vědomí, že jsem použil hranaté závorky ([) pro vyhledání rozsahu slov. Protože grep rozlišuje velká a malá písmena, nenajde řádky, které začínají velkými písmeny v daném rozsahu.

Pro zobrazení všech řádků, které začínají jak velkými, tak malými písmeny, použijeme:

$ egrep '^[l-u]|[L-U]' file.txt

Nebo,

$ egrep '^([l-u]|[L-U])' file.txt

Ukázkový výstup:

ostechnix
Ostechnix
o$technix
linux
linus
unix
technology
HELLO world

Vidět? Nyní máme slova začínající rozsahem znaků "l" až "u" (buď velká nebo malá písmena).

Příklady příkazů Fgrep

fgrep znamená f ast grep . Je to podobné jako "grep -F" . fgrep nedokáže rozpoznat regulární výrazy nebo speciální znaky. fgrep lze použít tam, kde chcete, aby byly vyhodnoceny regulární výrazy.

Například k vyhledání slov končících na "x" použijeme následující příkaz .

$ grep x$ file.txt
ostechnix
Ostechnix
o$technix
linux
unix

Nyní spusťte stejný příkaz s fgrep.

$ fgrep x$ file.txt

Nezobrazí nic, protože nemohl vyhodnotit speciální znaky.

Nyní se podívejme na další příklad. Chcete-li vyhledat slova, která odpovídají řetězci "o$" s příkazem grep provedeme:

$ grep o$ file.txt

Ale nedostáváme nic, proč? Protože podle výše uvedeného příkazu používáme k nalezení slov končících na „o“ symbol dolaru ($). Vzhledem k tomu, že v souboru.txt nebyly žádné znaky končící „o“, nedostaneme nic.

Nyní spusťte stejný příkaz s fgrep.

$ fgrep o$ file.txt 
o$technix

Vidět? Zde používáme příkaz fgrep. Jednoduše ignoruje symbol dolaru (samozřejmě speciální znak) a zobrazí slovo, které obsahuje řetězec "o$".

Další podrobnosti o grep získáte zadáním:

$ grep --help

Poskytne všechny možné možnosti. Nebo se podívejte na manuálové stránky.

$ man grep

Doporučené čtení:

  • Naučte se efektivně používat stránky Manuál
Etymologie grep

Grep napsal přes noc Ken Thompson , stejný člověk, který napsal Unix. Ale proč a jak dostal svůj název? Profesor Brian Kernighan vysvětluje etymologii grep v tomto videu.

A to je vše. Grep je jedním z důležitých příkazů, které byste se měli důkladně naučit.

Nyní víte, co je grep a jak jej používat k vyhledávání textových souborů s odpovídajícími vzory v GNU/Linuxu. Také jste se dozvěděli, jak Grep dostal své jméno. Doufám, že to bylo užitečné.


Linux
  1. Výukový program příkazů Linux factor pro začátečníky (s příklady)

  2. Linux ano Příkazový kurz pro začátečníky (s příklady)

  3. Kurz příkazu typu s příklady pro začátečníky

  1. Rozšíření Linuxu Command Tutorial pro začátečníky (s příklady)

  2. Numfmt Command Tutorial s příklady pro začátečníky

  3. Návod Shuf Command s příklady pro začátečníky

  1. Linux df Command Tutorial pro začátečníky (8 příkladů)

  2. Linux fgrep Command Tutorial pro začátečníky (s příklady)

  3. Výukový program příkazů Linux expr pro začátečníky (s příklady)