Jaka jest różnica między Grep, Egrep i Fgrep w Linuksie?

jednym z renomowanych narzędzi wyszukiwania w systemach uniksopodobnych, które mogą być używane do wyszukiwania wszystkiego, czy jest to plik, linia lub wiele linii w pliku, jest narzędzie grep. Jest bardzo obszerny pod względem funkcjonalności, co można przypisać dużej liczbie opcji, które obsługuje, takich jak: wyszukiwanie za pomocą wzorca ciągów, wzór reg-ex lub reg-ex oparty na perlu itp.

różnica między grep, egrep i fgrep
różnica między grep, egrep i fgrep w Linuksie

ze względu na różne funkcje, ma wiele funkcji warianty takie jak grep, egrep (rozszerzony grep), fgrep (stały grep), pgrep (procesowy grep), rgrep (rekurencyjny grep) itp. Ale te warianty mają niewielkie różnice w stosunku do oryginalnego grep, który sprawił, że są popularne i używane przez różnych programistów Linuksa do określonych zadań.

najważniejsze, co pozostaje do zbadania, to jakie są różnice między trzema głównymi wariantami, tj. 'grep’, 'egrep’ i 'fgrep’ grep, które sprawiają, że użytkownicy Linuksa wybierają jedną lub drugą wersję zgodnie z wymaganiami.

niektóre specjalne Meta-znaki grep

  1. + – odpowiednik jednego lub więcej wystąpień poprzedniego znaku.
  2. ? div – – oznacza to prawie 1 powtórzenie poprzedniego znaku. Na przykład: a? pasuje do 'A’ lub 'aa’.
  3. ( – początek wyrażenia alternacji.
  4. ) – koniec wyrażenia alternacji.
  5. | – dopasowanie któregokolwiek z wyrażeń oddzielonych'|'. Na przykład: "(a|b)cde” pasuje do 'abcde’ lub 'bbcde’.
  6. { – ten meta-znak wskazuje początek specyfikacji zakresu. Jak: "a{2}” pasuje do ” aa ” w pliku, czyli 2 razy.
  7. } – ten meta-znak wskazuje koniec specyfikacji zakresu.

różnice między grep, egrep i fgrep

niektóre główne różnice między grep, egrep i fgrep można wyróżnić w następujący sposób. Dla tego zestawu przykładów Zakładamy, że plik, na którym wykonywana jest operacja, będzie:

Linux grep Command
Linux grep Command

grep Command

grep lub globalne Wyrażenie regularne Print jest głównym programem wyszukiwania w systemach uniksopodobnych który może wyszukiwać dowolny typ łańcucha na dowolnym pliku lub liście plików, a nawet wyjście dowolnego polecenia.

sugerowane przeczytanie: 12 praktycznych przykładów linuksowego polecenia grep

używa podstawowych wyrażeń regularnych oprócz zwykłych łańcuchów jako wzorca wyszukiwania. W podstawowych wyrażeniach regularnych (BRE) meta-znaki jak: '{','}''(',')''|''+''?' tracą swoje znaczenie i są traktowane jako normalne znaki ciągu i muszą być Escape, jeśli mają być traktowane jako znaki specjalne.

sugerowany odczyt: 11 poleceń 'Grep’ w klasach znaków i wyrażeniach w nawiasach

ponadto grep używa algorytmu Boyera-Moore ’ a do szybkiego wyszukiwania dowolnego ciągu znaków lub wyrażenia regularnego.

$ grep -C 0 '(f|g)ile' check_file$ grep -C 0 '\(f\|g\)ile' check_file
Linux grep Command Example
Linux grep Command Example

Like here, when the command is run without escaping '(' ')' and '|' then it searched for the complete string i.e. "(f|g)ile” in the file. Ale gdy znaki specjalne zostały uniknięte, zamiast traktować je jako część łańcucha, grep traktował je jako meta-znaki i wyszukiwał słowa "file”lub "gile” w pliku.

polecenie Egrep

Egrep lub grep-E jest inną wersją grepa lub rozszerzonego grepa. Ta wersja grep jest wydajna i szybka, jeśli chodzi o Wyszukiwanie wzorca wyrażenia regularnego, ponieważ traktuje meta-znaki takimi, jakie są i nie zastępuje ich jako ciągów znaków, jak w grep, a zatem jesteś zwolniony z ciężaru ucieczki od nich, jak w grep. Używa ERE lub rozszerzonego zestawu wyrażeń regularnych.

w przypadku egrep, nawet jeśli nie unikniesz meta-znaków, potraktuje je jako znaki specjalne i zastąpi ich specjalne znaczenie zamiast traktować je jako część łańcucha znaków.

$ egrep -C 0 '(f|g)ile' check_file$ egrep -C 0 '\(f\|g\)ile' check_file
Linux egrep przykłady poleceń
Linux egrep przykłady poleceń

jak tutaj, egrep wyszukał"file” ciąg znaków, gdy meta-znaki nie były znakami ucieczki, co oznaczałoby znaczenie tych znaków. Ale gdy te znaki zostały usunięte, egrep potraktował je jako część łańcucha i wyszukał kompletny łańcuch "(f|g)ile” w pliku.

polecenie fgrep

fgrep lub stały grep lub grep-F jest kolejną wersją grep, która jest szybka w wyszukiwaniu, jeśli chodzi o Wyszukiwanie całego ciągu znaków zamiast wyrażenia regularnego, ponieważ nie rozpoznaje wyrażeń regularnych, ani żadnych meta-znaków. Do wyszukiwania dowolnego bezpośredniego ciągu znaków, jest to wersja grep, która powinna być zaznaczona.

Fgrep wyszukuje kompletny łańcuch znaków i nie rozpoznaje znaków specjalnych jako części wyrażenia regularnego, nawet jeśli są one znakami Escape lub nie.

$ fgrep -C 0 '(f|g)ile' check_file$ fgrep -C 0 '\(f\|g\)ile' check_file
Linux fgrep przykłady poleceń
Linux fgrep przykłady poleceń

Jak, gdy meta-znaki nie były znakami ucieczki, fgrep wyszukał kompletny ciąg"(f|g)ile” w pliku, a gdy meta-znaki były znakami ucieczki, Komenda fgrep wyszukała"\(f\|g\)ile” wszystkie znaki w pliku.

omówiliśmy już kilka praktycznych przykładów polecenia grep możesz przeczytać je tutaj, jeśli chcesz uzyskać więcej z polecenia grep w Linuksie.

poznaj 12 praktycznych przykładów linuksowego polecenia grep

wnioski

powyżej wyróżnione są różnice między 'grep’, 'egrep’ i 'fgrep’. Oprócz różnicy w zestawie użytych wyrażeń regularnych i szybkości wykonania, parametry wiersza poleceń rest pozostają takie same dla wszystkich trzech wersji grep i nawet zamiast „egrep” lub „fgrep” zaleca się użycie „grep-E” lub „grep-F”.

Posted on

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.