What’s-Difference-Between-Grep,-Egrep-and-Fgrep-in-Linux

В чем разница между Grep, Egrep и Fgrep?

Новости

Одним из известных инструментов поиска в Unix-подобных системах, которые можно использовать для поиска всего, будь то файл или строка или несколько строк в файле, — это утилита grep. Он очень обширен в функциональности, за счет большого количества поддерживаемых им опций, таких как: поиск с использованием строкового шаблона или регулярных выражений шаблон или perl based регулярных выражений  и т.д.

Из-за его различных функциональных возможностей инструмент grep имеет множество вариантов, включая egrep (Extended GREP), fgrep (Fixed GREP), pgrep (Process GREP), rgrep (рекурсивный GREP) и т.д. Но эти варианты имеют незначительные отличия от оригинального grep.

В этой статье мы разберемся с различиями между тремя основными вариантами: «grep», «egrep» и «fgrep». Чтобы пользователи Linux знали, что выбирать в соответствии со своими требованиями.

Некоторые специальные метасимволы grep:

  • + — эквивалентно одному или нескольким вхождениям предыдущего символа.
  • ? — это означает хотя-бы одно повторение предыдущего символа. Так запись «a?» будет соответствовать «a» или «aa».
  • (— начало выражения чередования.
  • ) — конец выражения чередования.
  • | — сопоставление любого из выражений, разделенных символом ‘|‘. Например: «(a | b) cde» будет соответствовать «acde», либо «bcde».
  • {— этот метасимвол указывает начало спецификатора диапазона. Например: «a {2}» соответствует вхождению «aa» в файле 2 раза.
  • } — этот метасимвол указывает конец спецификатора диапазона.

Различия между grep, egrep и fgrep

Некоторые основные различия между grep, egrep и fgrep можно выделить следующим образом. Для этого набора примеров мы принимаем файл, в котором выполняется операция:

Linux-grep-Command
Команда Grep

Grep или Global Regular Expression Print — основная программа поиска в Unix-подобных системах, которая может искать любой тип строки в любом файле или списке файлов или даже выводить любую команду.

В качестве шаблона поиска он использует обычные регулярные выражения, кроме обычных строк. В Basic Regular Expressions (BRE) метасимволы вроде: ‘{‘, ‘}’, ‘(‘, ‘)’, ‘|’, ‘+’, ‘?’ теряют свой смысл и считаются нормальными символами строки и должны быть выделены специальным образом, если их следует рассматривать как специальные символы.

Кроме того, grep использует алгоритм Boyer-Moore для быстрого поиска любой строки или регулярного выражения.

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

 

Linux-grep-Command-Example
В примере выше, когда команда запускается без экранирования ‘(‘ ‘)’ и ‘|’, затем grep ищет полную строку, то есть «(f | g) ile» в файле. Но когда специальные символы были экранированы, grep обрабатывает их как метасимволы и ищет слова «file» или «gile» в файле.

Команда egrep

Egrep или grep -E — это другая версия grep или Extended grep. Эта версия grep эффективна и быстра, когда дело доходит до поиска шаблона регулярных выражений, поскольку она обрабатывает метасимволы как есть и не заменяет их как строки. Egrep использует ERE или Extended Extended Expression.

В случае egrep, даже если вы не избегаете метасимволы, команда будет относиться к ним как к специальным символам и заменять их своим особым значением вместо того, чтобы рассматривать их как часть строки.

$ egrep -C 0 '(f|g)ile' check_file
$ egrep -C 0 '\(f\|g\)ile' check_file

 


Здесь egrep ищет строку «file», когда мета-символы не экранированы, поскольку это означает значение этих символов. Но, когда эти символы стали экранированы, egrep рассматривает их как часть строки и ищет полную строку «(f | g) ile» в файле.

Команда fgrep

Fgrep или Fixed grep или grep -F — это еще одна версия grep, которая необходима, когда дело доходит до поиска всей строки вместо регулярного выражения, поскольку оно не распознает ни регулярные выражения, ни метасимволы. Для поиска любой строки напрямую выбирайте эту версия grep.

Fgrep ищет полную строку и не распознает специальные символы как часть регулярного выражения, несмотря на то экранированы символы или нет.

$ fgrep -C 0 '(f|g)ile' check_file
$ fgrep -C 0 '\(f\|g\)ile' check_file

 

Linux-fgrep-Command-Examples
Когда метасимволы не были экранированы, fgrep искала полную строку «(f | g) ile» в файле, а когда метасимволы стали экранированы, команда fgrep искала «\ (f \ | g \) Ile» все символы которые есть в файле.

 

Вывод

Выше рассмотрены различия между «grep», «egrep» и «fgrep». Несмотря на различия в наборе используемых регулярных выражений и скорости выполнения, параметры командной строки остаются одинаковыми для всех трех версий grep.

 

Спасибо за уделенное время на прочтение статьи!

Если возникли вопросы, задавайте их в комментариях.

Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!

Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco от Академии Ciscoкурсы Linux от Linux Professional Institute на платформе SEDICOMM University.

Курсы Cisco и Linux с трудоустройством!

Спешите подать заявку! Осталось пару мест. Группы стартуют 22 июля, а следующая 19 августа, 23 сентября, 21 октября, 25 ноября, 16 декабря, 20 января, 24 февраля.
Что Вы получите?
  • Поможем стать экспертом в сетевом администрировании и получить международные сертификаты Cisco CCNA Routing & Switching или Linux LPI.
  • Предлагаем проверенную программу и учебник экспертов из Cisco Networking Academy и Linux Professional Institute, сертифицированных инструкторов и личного куратора.
  • Поможем с трудоустройством и сделать карьеру. 100% наших выпускников трудоустраиваются.
Как проходит обучение?
  • Проводим вечерние онлайн-лекции на нашей платформе или обучайтесь очно на базе Киевского офиса.
  • Спросим у вас об удобном времени для практик и подстроимся: понимаем, что времени учиться мало.
  • Если хотите индивидуальный график — обсудим и осуществим.
  • Выставим четкие дедлайны для самоорганизации. Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
А еще поможем Вам:
  • отредактировать резюме;
  • подготовиться к техническим интервью;
  • подготовиться к конкурсу на понравившуюся вакансию;
  • устроим на работу в Cisco по программе Cisco Incubator, New Graduate и Experienced. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.
Чтобы учиться на курсах Cisco CCNA Routing & Switching и Linux LPI, подайте заявку или получите бесплатную консультацию.
Новости

Больше похожих постов

Новая атака BLESA угрожает миллиардам Bluetooth-устройств, курсы переподготовки по информационной безопасности Минск

Новая атака BLESA угрожает миллиардам Bluetooth-устройств, курсы переподготовки по информационной безопасности Минск

52
0
Исследователи обнаружили новый метод атаки уязвимых Bluetooth-устройств. Если хакеры начнут ее эксплуатировать, но смогут заразить миллиарды приборов по всему миру.…
Российские хакеры похитили почти 17 миллионов долларов, курс по кибербезопасности секреты хакеров Минск

Российские хакеры похитили почти 17 миллионов долларов, курс по кибербезопасности секреты хакеров Минск

55
0
Власти США предъявили обвинения двум российским хакерам во взломе криптовалютных бирж. Более того, правоохранительные органы смогли собрать достаточно улик. Исследователи,…

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Заполните поле
Заполните поле
Пожалуйста, введите корректный адрес email.
Вы должны согласиться с условиями для продолжения

Most Viewed Posts
Меню