Jaka jest różnica między GREP, EGREP i FGREP w Linux?

Jaka jest różnica między GREP, EGREP i FGREP w Linux?

Jednym z uznanych narzędzie wyszukiwania w systemach podobnych do UNIX, których można użyć do wyszukiwania cokolwiek innego, czy jest to plik, czy linia, czy wiele wierszy w pliku, jest narzędzie GREP. Jest bardzo rozległy funkcjonalność, którą można przypisać dużej liczbie opcji, które obsługuje, takie jak: wyszukiwanie za pomocą wzorca stringowego, wzorca Reg-EX lub Reg-EX oparta na PERL itp.

Różnica między GREP, EGREP i FGREP w Linux

Ze względu na różne funkcje ma wiele wariantów, w tym Grep, Egrep (Rozszerzony grep), FGREP (Naprawiono grep), pgrep (Proces GREP), RGREP (Rekurencyjny grep) itp. Ale te warianty mają niewielkie różnice w stosunku do oryginału Grep co sprawiło, że są popularne i są używane przez różnych programistów Linux do określonych zadań.

Główną rzeczą, którą pozostaje do zbadania, są różnice między trzema głównymi wariantami I.mi. „Grep”, „Egrep” I „FGREP” GREP, który sprawia, że ​​użytkownicy Linux wybierają jedną lub drugą wersję zgodnie z wymaganiami.

Niektóre specjalne meta-właściciele Grep

  1. + - Równoważne jednemu lub więcej wystąpieniu poprzedniego charakteru.
  2. ? - Oznacza to prawie 1 powtórzenie poprzedniego charakteru. Tak jak: A? Pasowałby 'A' Lub „aa”.
  3. ( - Początek wyrażenia naprzemienności.
  4. ) - Koniec wyrażenia naprzemiennej.
  5. | - Dopasowanie jednego z wyrażeń oddzielonych przez '|' '. Tak jak: „(A | B) CDE” by się zgadza „Abcde” Lub „BBCDE”.
  6. - Ten meta-znak wskazuje na początek specyfikatora zasięgu. Tak jak: „A 2” mecze „AA” w pliku i.mi. 2 razy.
  7. - Ten meta-znak wskazuje na koniec specyfikatora zasięgu.

Różnice między GREP, EGREP i FGREP

Niektóre główne różnice między Grep, Egrep I FGREP Można podkreślić w następujący sposób. W przypadku tego zestawu przykładów zakładamy plik, w którym wykonywana jest operacja:

Polecenie Linux Grep

Polecenie GREP

Grep Lub Globalny wydruk ekspresji regularnej jest głównym programem wyszukiwania w systemach podobnych do UNIX, które mogą wyszukiwać dowolny rodzaj ciągu w dowolnym pliku lub listy plików, a nawet wyjścia dowolnego polecenia.

Sugerowane przeczytanie: 12 Praktyczne przykłady polecenia Linux Grep

To używa Podstawowe wyrażenia regularne Oprócz normalnych ciągów jako wzorca wyszukiwania. W podstawowych wyrażeniach regularnych (BRE) meta-właściciele takie jak: „”, „”,„(”, ')','|' ',„+”,'?' stracić swoje znaczenie i są traktowane jako zwykłe znaki sznurka i należy je uniknąć, jeśli mają być traktowane jako znaki specjalne.

Sugerowane przeczytanie: 11 Zaawansowanie poleceń „grep” na klasach postaci i wyrażeń nawigacyjnych

Grep używa również algorytmu Boyer-Moore do szybkiego wyszukiwania dowolnego sznurka lub wyrażenia regularnego.

$ grep -c 0 '(f | g) Ile' check_file $ grep -c 0 '\ (f \ | g \) Ile' check_file 
Przykład polecenia Linux Grep

Jak tutaj, kiedy polecenie jest uruchamiane bez ucieczki „(”) ” I '|' ' Następnie przeszukał pełny ciąg i.mi. „(F | g) Ile” w pliku. Ale kiedy uciekli postacie specjalne, zamiast traktować je jako część sznurka, Grep traktował je jako meta-właściciele i szukał słów "plik" Lub „Gile” w pliku.

Polecenie egrep

Egrep Lub Grep -mi to kolejna wersja grep lub rozszerzonego grepa. Ta wersja GREP jest wydajna i szybka, jeśli chodzi o poszukiwanie wzorca wyrażenia regularnego, ponieważ traktuje meta-właściciele i nie zastępuje ich jako strunami jak w Grep, a zatem jesteś uwolniony od ciężaru ich ucieczki, tak w Grep. Używa ere lub rozszerzonego zestawu wyrażeń regularnych.

W przypadku Egrepa, nawet jeśli nie uciekniesz z meta-znaków, traktowałoby to jako postacie specjalne i zastąpiłby ich specjalne znaczenie, zamiast traktować je jako część ciągów.

$ egrep -c 0 '(f | g) Ile' check_file $ egrep -c 0 '\ (f \ | g \) Ile' check_file 
Przykłady poleceń Linux Egrep

Jak tutaj, Egrep szukałem "plik" ciąg, gdy meta-znakom nie uciekł, ponieważ oznaczałoby to znaczenie tych znaków. Ale kiedy te znaki zostały ucieknięte, Egrep potraktował je jako część String i szukał pełnego ciągu „(F | g) Ile” w pliku.

Polecenie FGREP

FGREP albo Naprawiono grep Lub grep -f to kolejna wersja GREP, która jest szybka w wyszukiwaniu, jeśli chodzi o wyszukiwanie całego ciągu zamiast wyrażenia regularnego, ponieważ nie rozpoznaje wyrażeń regularnych, ani żadnych meta-znaków. W celu wyszukiwania dowolnego bezpośredniego ciągu jest to wersja GREP, którą należy wybrać.

FGREP przeszukuje pełny ciąg i nawet nie rozpoznaje znaków specjalnych jako części wyrażenia regularnego, nawet jeśli ucieknie lub nie ucieknie.

$ fgrep -c 0 '(f | g) Ile' check_file $ fgrep -c 0 '\ (f \ | g \) Ile' check_file 
Przykłady poleceń FGrep Linux

Na przykład, gdy meta-znakom nie uciekł, FGREP szukał pełnego ciągu „(F | g) Ile” w pliku i po ucieczce meta-znakom, następnie szukało polecenia FGREP „\ (F \ | g \) Ile” Wszystkie znaki w pliku.

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

Dowiedz się 12 praktycznych przykładów polecenia Linux Grep

Wniosek

Wyżej podświetlone są różnice między „Grep”, „Egrep” I „FGREP”. Oprócz różnicy w zestawie używanych wyrażeń regularnych i prędkości wykonania parametry wiersza poleceń REST pozostają takie same dla wszystkich trzech wersji GREP, a nawet zamiast „egrep” lub „fgrep”, „grep -e” lub „grep - F ”zaleca się stosowanie.

Jeśli znajdziesz inne różnice między tymi trzema wersjami GREP, wspomnij o nich w swoich komentarzach.