У чому різниця між Grep, Egrep та Fgrep, Блог Університету SEDICOMM
Одним з відомих інструментів пошуку в 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» відповідає входженню«aa» у файлі 2 рази.
- > — цей метасимвол вказує на кінець специфікатора діапазону.
Відмінності між grep, egrepта fgrep
Деякі основні відмінності міжgrep, egrep таfgrep можна виділити в такий спосіб. Для цього набору прикладів ми приймаємо файл, у якому виконується операція:
Команда Grep

Grep абоGlobal Regular Expression Print — основна програма пошуку в Unix-подібних системах, яка може шукати будь-який тип рядка в будь-якому файлі або списку файлів або навіть виводити будь-яку команду.
Як шаблон пошуку він використовує звичайні регулярні вирази, крім звичайних рядків. У Basic Regular Expressions(BRE) метасимволи на кшталт:'', '(', ')', '', '+', '?' втрачають свій сенс і вважаються нормальними символами рядки і мають бути виділені спеціальним чином, якщо їх слід розглядати як спеціальні символи.
Крім того,grep використовує алгоритмBoyer-Moore для швидкого пошуку будь-якого рядка або регулярного виразу.

У прикладі вище, коли команда запускається без екранування'(' ')' і'', потімgrep шукає повний рядок, тобто «(f g) ile » у файлі. Але коли спеціальні символи були екрановані,grep обробляє їх як метасимволи та шукає слова«file» або«gile» у файлі.
Команда egrep
Egrep абоgrep -E - це інша версіяgrep абоExtended grep. Ця версіяgrep ефективна та швидка коли справа доходить до пошуку шаблону регулярних виразів, оскільки вона обробляє метасимволи як є і не замінює їх як рядки.Egrep використовуєERE абоExtended Extended Expression.
У випадкуegrep, навіть якщо ви не уникаєте метасимволи, команда ставитиметься до них як до спеціальних символів і замінюватиме їх своїм особливим значенням замість того, щоброзглядати їх як частину рядка.
Тутegrep шукає рядок«file», коли мета-символи не екрановані, оскільки це означає значення цих символів. Але коли ці символи стали екрановані,egrep розглядає їх як частину рядка і шукає повний рядок «(f g) ile » у файлі.
Команда fgrep
Fgrep абоFixed grep абоgrep-F — це ще одна версіяgrep, яка необхідна, коли справа доходить до пошуку всього рядка замість регулярного виразу, оскільки воно не розпізнає ні регулярні вирази, ні метасимволи. Для пошуку будь-якого рядка безпосередньо вибирайте цю версіюgrep.
Fgrep шукає повний рядок і не розпізнає спеціальні символи як частину регулярного виразу, незважаючи на те, що екрановані символи чи ні.
Коли метасимволи не були екрановані,fgrep шукала повний рядок «(f g) ile » у файлі, а коли метасимволи стали екрановані, командаfgrep шукала «\ (f \ g \) Ile» всі символи які є у файлі.
Вище розглянуті відмінності між«grep», «egrep» і«fgrep». 3>grep.
Дякуємо за приділений час на прочитання статті!
Підписуйтесь на оновлення нашого блогу та залишайтесь в курсі новин світу інфокомунікацій!
Щоб знати більше та вирізнятися знаннями серед натовпу IT-шників, записуйтесь на курси Cisco від Академії Cisco, курси Linux від Linux Professional Institute на платформі SEDICOMM University.