GNU/Linux >> Znalost Linux >  >> Linux

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

Zatímco grep je dobře známý příkaz Linuxu (již jsme se mu podrobně věnovali), víte, že existují dvě různé varianty tohoto nástroje? Ano, toto jsou egrep a fgrep . V tomto tutoriálu budeme diskutovat o druhém (fgrep) pomocí snadno pochopitelných příkladů. Ale než to uděláme, stojí za zmínku, že všechny příklady a pokyny uvedené v tomto tutoriálu byly testovány na Ubuntu 16.04LTS.

Příkaz Linux fgrep

Pokud se podíváte na oficiální dokumentaci, manuálová stránka pro příkaz grep říká, že fgrep není nic jiného než grep -F. Také říká, že varianty jako fgrep a egrep jsou poskytovány pouze pro zpětnou kompatibilitu. Těchto podrobností se dotkneme později v tomto tutoriálu.

Mezitím je zde syntaxe fgrep (která je stejná jako syntaxe grep):

grep [OPTIONS] PATTERN [FILE...]

A zde je návod, jak manuálová stránka příkazu grep tento nástroj vysvětluje:

grep searches the named input FILEs for lines containing a match to the given PATTERN. If no files 
are specified, or if the file “-” is given, grep searches standard input. By default, grep prints
the matching lines.

Následující příklady ve stylu otázek a odpovědí by vám měly poskytnout lepší představu o tom, jak fgrep funguje.

O1. Jak se fgrep liší od grep a egrep?

Příkaz fgrep se liší od příkazů grep i egrep v tom smyslu, že interpretuje PATTERN jako seznam pevných řetězců (místo regulárních výrazů) oddělených novými řádky.

Protože se říká, že je to stejné jako grep -F, zde je návod, jak odborník vysvětlil možnost grep -F na StackExchange:

The -F switch switches grep into a different mode where it accepts a pattern to match, but then 
splits that pattern up into one search string per line and does an OR search on any of the strings
without doing any special pattern matching.

Q2. Jak používat fgrep?

Abychom porozuměli použití fgrep, uveďme si nejprve základní příklad. Předpokládejme, že existuje soubor (file1), který obsahuje následující obsah:

A je tu další soubor (words.txt), který obsahuje seznam slov, která chceme hledat v souboru 1.

Zde je návod, jak můžete použít fgrep k provedení tohoto vyhledávání:

fgrep -f words.txt file1

Můžete tedy vidět, že nalezená slova byla zvýrazněna červeně. Někteří z vás mohou namítnout, že to je to, co by v tomto případě udělaly také grep a egrep, jak se tedy fgrep liší?

Za prvé, ano, máte pravdu. Příkazy grep a egrep by také vytvořily podobný výstup:

Rozdíl však bude zřejmý v případě, že soubor1 a word.txt obsahují následující obsah (pozor na speciální znaky ve slovech):

Zde egrep a grep nenajdou všechna slova:

Ale fgrep bude fungovat tak, jak bylo zamýšleno:

O3. Opravdu neexistuje žádný rozdíl mezi fgrep a grep?

Podle oficiální dokumentace není mezi fgrep a příkazem grep -F žádný rozdíl. Mezi těmito dvěma nástroji je však údajně jeden velký rozdíl:algoritmus porovnávání řetězců, který používají. Zatímco fgrep používá algoritmus Aho-Corasick, grep využívá upravenou verzi Commentz-Walter.

"To znamená, že grep má nejhorší případ složitosti O(mn), zatímco fgrep je přinejhorším O(m+n),“ říká expert na fórech StackExchange.

Závěr

Jak je zřejmé, příkaz fgrep není složitý na pochopení a použití. Pokud jde o rozdíl mezi fgrep a grep -F, i když jsme již zaznamenali body ve 3. čtvrtletí, myslíme si, že tento problém by neměl obtěžovat velkou část uživatelů. V případě, že máte pochybnosti nebo máte dotaz týkající se fgrep, podělte se s námi o něj zanecháním komentáře níže.


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

  2. Výukový program pro Linux tac Command pro začátečníky (s příklady)

  3. Uživatelé Linuxu Výukový program příkazů pro začátečníky (s příklady)

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

  2. Výukový program příkazu Linux sum pro začátečníky (s příklady)

  3. Výukový program příkazu spánku pro Linux pro začátečníky (s příklady)

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

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

  3. Výukový program příkazů se základním názvem Linuxu pro začátečníky (s příklady)