У чому різниця між Grep, Egrep і Fgrep?
- Деякі спеціальні метасимволи grep:
- команда Grep
- команда egrep
- команда fgrep
- висновок
- Курси Cisco і Linux з працевлаштуванням!
Підписуйтесь на оновлення нашого блогу і додавайтеся до нас в соціальні мережі:
Дякую що ви з нами!
Одним з відомих інструментів пошуку в 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 можна виділити наступним чином. Для цього набору прикладів ми приймаємо файл, в якому виконується операція:
команда 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
В наведеному вище прикладі, коли команда запускається без екранування '(' ')' і '|' , Потім 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
Коли метасимволу були екрановані, 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 .
Як проходить навчання?