У чому різниця між 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

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.