Skip to main content

Příklad použití příkazu grep Linux

Úspěšná dopadení zlodějů (Červen 2026)

Úspěšná dopadení zlodějů (Červen 2026)
Anonim

Příkaz Linux grep se používá jako metoda pro filtrování vstupu. GREP znamená globální regulární výrazovou tiskárnu, a proto je nutné, abyste ji efektivně využili, měli byste mít nějaké znalosti o regulárních výrazech.

V tomto článku se dozvíte řadu příkladů, které vám pomohou pochopit příkaz grep.

01 ze dne 09

Jak vyhledávat řetězec v souboru pomocí GREP

Představte si, že máte textový soubor nazvaný knihy s následujícími dětskými knihami:

  • Robin Hood
  • Červená Karkulka
  • Peter Pan
  • Zlatovláska a tři medvědi
  • Sněhurka a sedm trpaslíků
  • Pinnochio
  • Kočka v klobouku
  • Tři malé prasátka
  • Gruffalo
  • Karlík a továrna na čokoládu

Chcete-li najít všechny knihy se slovem "The" v názvu, použijete následující syntaxi:

grep Knihy

Zobrazí se následující výsledky:

  • Zlatovláska a tři medvědi
  • Sněhurka a sedm trpaslíků
  • Kočka v klobouku
  • Tři malé prasátka
  • Gruffalo
  • Karlík a továrna na čokoládu

V každém případě se zvýrazní slovo "The".

Vyhledávání je citlivé na velká a malá písmena, takže pokud jeden z titulů měl "místo" "The", pak by nebyl vrácen.

Chcete-li případ ignorovat, můžete přidat následující přepínač:

Grep knihy - case-case

Můžete také použít přepínač -i následujícím způsobem:

grep -i knihy

Pokračujte ve čtení níže

02 ze dne 09

Vyhledání řetězce v souboru pomocí zástupných znaků

Příkaz grep je velmi silný. Pro filtrování výsledků můžete použít množství technik pro porovnávání vzorků.

V tomto příkladu vám ukážeme, jak hledat řetězec v souboru pomocí zástupných znaků.

Představte si, že máte soubor nazvaný místa s následujícími skotskými názvy míst:

aberdeenaberystwythaberlourinverzníinverzinewburghnový jeleňnový gallowayGlasgowEdinburgh

Chcete-li najít všechna místa s obrácením v názvu, použijte následující syntaxi:

grep inver * místa

Hvězdička (*) zástupný znak znamená 0 ​​nebo mnoho. Proto pokud máte místo nazvané inver nebo místo nazvané Inverness, pak by se oba vrátili.

Dalším zástupným znakem, který můžete použít, je období (.). Můžete to použít pro jedno písmeno.

grep inver.r místa

Na výše uvedeném příkazu by se nacházely místa nazývaná "inverurie" a "inverse", ale nenašli by se neúmyslně, protože mezi oběma dvěma písmeny r může být pouze jedna zástupná značka.

Doba zástupného znaku je užitečná, ale může způsobit problémy, pokud ji máte jako součást textu, který hledáte.

Podívejte se například na tento seznam názvů domén

  • linux.about.com
  • kusupport.about.com
  • mp3.about.com
  • minecraft.about.com
  • androidgames.about.com
  • netforbeginners.about.com
  • everydaylinuxusus.com
  • google.co.uk
  • google.au
  • direct.gov.uk

Chcete-li najít všechny .coms, které byste mohli hledat pouze pomocí následující syntaxe:

grep * about * domain names

Výše uvedený příkaz by spadl, pokud by obsahoval následující název:

  • everydaylinuxuser.com/about.html

Mohli byste proto zkusit následující syntaxi:

grep * domain.com

To by fungovalo v pořádku, pokud neexistovala doména s následujícím názvem:

aboutycom.com

Chcete-li skutečně hledat termín about.com, musíte uniknout bodkou následujícím způsobem:

grep * o názvech domén .com

Konečným zástupným znakem, který vám ukáže, je otázka, která znamená nula nebo jeden znak.

Například:

grapple placenames

Výše uvedený příkaz vrátí aberdeen, aberystwyth nebo dokonce berwick.

Pokračujte ve čtení níže

03 ze dne 09

Hledání řetězců na začátku a konci řádku Použití grep

Symboly carat (^) a dolaru ($) umožňují vyhledávat vzory na začátku a na konci řádků.

Představte si, že máte soubor s názvem fotbal s následujícími názvy týmů:

  • Blackpool
  • Liverpool
  • město Manchester
  • Leicester City
  • Manchester United
  • Newcastle United
  • FC Spojené Manchester

Pokud jste chtěli najít všechny týmy, které začaly s Manchesterem, použijete následující syntaxi:

grep ^ Manchester týmy

Výše uvedený příkaz by se vrátil Manchester City a Manchester United, ale ne FC United Manchester.

Případně můžete najít všechny týmy, které končí s United, pomocí následující syntaxe:

grep United $ týmy

Výše uvedený příkaz se vrátí do Manchesteru United a Newcastle United, ale ne FC United Manchester.

04 ze dne 09

Počítání počtu shody pomocí grep

Pokud nechcete vrátit skutečné řádky, které odpovídají vzoru pomocí grep, ale chcete vědět, kolik existuje, můžete použít následující syntaxi:

grep -c pattern input file

Pokud byl vzor dvakrát porovnán, vrátí se číslo 2.

Pokračujte ve čtení níže

05 ze dne 09

Hledání všech výrazů, které neodpovídají použití grep

Představte si, že máte seznam míst s následujícími zeměmi:

  • aberdeen skotsko
  • glasgow skotsko
  • liverpool Anglie
  • colwyn bay
  • Londýn, Anglie

Možná jste si všimli, že v zátoce Colwyn není s ní přidružena žádná země.

Chcete-li vyhledat všechna místa se zemí, můžete použít následující syntaxi:

grep land $ places

Vrátí se výsledky všech míst s výjimkou zálivu Colwyn.

To samozřejmě funguje pouze pro místa, která končí v zemi (sotva vědecká).

Výběr můžete invertovat pomocí následující syntaxe:

grep -v země $ místa

To by nalezlo všechna místa, která neskončila zemí.

06 z 09

Jak najít prázdné čáry v souborech pomocí grep

Představte si, že máte vstupní soubor, který používá aplikace třetí strany, která přestane číst soubor, když najde prázdný řádek takto:

  • aberdeen scotland
  • inverzní skotsko
  • liverpool anglie
  • colwyn bay wales

Když se aplikace dostane po linii po liverpoolu, přestane číst, což znamená, že Colwyn Bay je zcela chybí.

Pomocí příkazu grep můžete hledat prázdné řádky s následující syntaxí:

grep ^ $ místa

Bohužel to není zvláště užitečné, protože právě vrací prázdné řádky.

Samozřejmě můžete získat počet prázdných řádků jako kontrolu, zda je soubor platný následovně:

grep -c ^ $ místa

Bylo by však mnohem užitečnější znát čísla řádků, které mají prázdný řádek, abyste je mohli nahradit. Můžete to provést následujícím příkazem:

grep -n ^ $ místa

Pokračujte ve čtení níže

07 ze dne 09

Jak vyhledávat řetězce velkých nebo malých znaků pomocí grep

Pomocí příkazu grep můžete určit, které řádky v souboru mají velká písmena pomocí následující syntaxe:

grep 'A-Z'

Hranaté závorky umožňují určit rozsah znaků. Ve výše uvedeném příkladu odpovídá libovolnému znaku, který je mezi A a Z.

Chcete-li tedy přiřadit malá písmena, můžete použít následující syntaxi:

grep 'a-z'

Pokud chcete odpovídat pouze písmenům, nikoli číslicím nebo jiným symbolům, můžete použít následující syntaxi:

grep 'a-zA-Z'

Stejně můžete provést následující čísla:

grep '0-9' název souboru 08 z 09

Hledání opakujících se vzorků pomocí grep

Můžete použít zkroucené závorky {} pro vyhledání opakujícího se vzoru.

Představte si, že máte soubor s telefonními čísly následujícím způsobem:

  • 055-1234
  • 055-4567
  • 555-1545
  • 444-0167
  • 444-0854
  • 4549-2234
  • x44-1234

Víte, že první část čísla musí být tři číslice a chcete najít řádky, které neodpovídají tomuto vzoru.

Z předchozího příkladu víte, že 0-9 vrací všechna čísla v souboru.

V tomto případě chceme řádky, které začínají třemi číslicemi, za kterými následuje pomlčka (-). Můžete to udělat pomocí následující syntaxe:

grep "^ 0-9 0-9 0-9 -" čísla

Jak víme z předchozích příkladů, karát (^) znamená, že čára musí začínat následujícím vzorem.

0-9 vyhledá libovolné číslo v rozmezí 0 až 9. Protože je toto zahrnuto třikrát, odpovídá 3 číslům. Konečně je pomlčka, která označuje, že pomlčka musí mít tři čísla.

Použitím zkroucených závorek můžete provést vyhledávání menší:

grep "^ 0-9 {3 } -" čísla

Lomítko uniká {bracket tak, že funguje jako součást regulárního výrazu, ale v podstatě to, co říká, je 0-9 {3}, což znamená, že libovolné číslo mezi 0 a 9 třikrát.

Konzolové konzoly lze použít také takto:

{5,10}{5,}

{5,10} znamená, že hledaný znak musí být opakován nejméně pětkrát, ale ne více než 10, zatímco {5,} znamená, že znak musí být opakován alespoň pětkrát, ale může to být více než to.

Pokračujte ve čtení níže

09 z 09

Použití výstupu z jiných příkazů Použití příkazu grep

Zatím jsme se podívali na přizpůsobení vzoru v rámci jednotlivých souborů, ale grep může použít výstup z ostatních příkazů jako vstup pro přizpůsobení vzoru.

Velkým příkladem toho je použití příkazu ps, který uvádí aktivní procesy.

Například spusťte následující příkaz:

ps -ef

Zobrazí se všechny spuštěné procesy ve vašem systému.

Pomocí příkazu grep můžete vyhledávat konkrétní spuštěný proces následujícím způsobem:

ps -ef | grep firefox

souhrn

Příkaz grep je základním příkazem Linuxu a je to, co stojí za to se učit, protože při hledání terminálů bude váš život mnohem jednodušší.