Як використовувати команду grep для пошуку інформації у файлах ⋆ ALexHost SRL

Перевірте свої навички на всіх наших хостингових послугах та отримайте знижку 15%!

Використовуйте код під час оформлення замовлення:

Skills
03.01.2025

Як використовувати команду grep для пошуку інформації у файлах

Команда grep – одна з найпотужніших і найпоширеніших утиліт у системах на базі Unix і Linux. Вона дозволяє шукати певні шаблони або текст у файлах, що робить її незамінним інструментом для системних адміністраторів, розробників і всіх, хто має справу з великими обсягами текстових даних. Незалежно від того, чи шукаєте ви у файлах журналів, конфігураційних файлах або кодових базах, grep допоможе вам швидко знайти потрібну інформацію. У цій статті ми розглянемо основи роботи з grep та деякі вдосконалені методи, які допоможуть вам отримати максимальну віддачу від цієї універсальної команди.

Що таке grep?

grep розшифровується як “Глобальний вивід регулярних виразів” Вона шукає у файлах рядки, які відповідають заданому шаблону, і за замовчуванням виводить ці рядки у термінал. grep особливо корисна тим, що підтримує регулярні вирази, тобто шаблони, які дозволяють шукати складні комбінації символів, а не лише дослівний текст.

Базовий синтаксис

Базовий синтаксис команди grep такий:

grep [параметри] шаблон [файл ...]
  • шаблон: Рядок або регулярний вираз, який ви шукаєте.
  • файл: Файл або файли, в яких ви хочете шукати.
  • опції: Додаткові прапорці, які змінюють поведінку grep.

Приклад використання

Ось простий приклад пошуку слова “error” у файлі з назвою log.txt:

grep "error" log.txt

Це виведе усі рядки у log.txt, які містять слово “error”

Найпоширеніші параметри grep

Сила grep полягає у його універсальності. Нижче наведено деякі з найпоширеніших опцій, які допоможуть вам уточнити результати пошуку.

1. Пошук у кількох файлах

Ви можете шукати в декількох файлах одночасно, перелічивши їх після шаблону:

grep "error" text.txt text1.txt

Крім того, ви можете використовувати підстановочні знаки для пошуку у всіх файлах певного типу:

grep "error" *.log

Буде виконано пошук “error” у всіх файлах .log у поточному каталозі.

2. Пошук без урахування регістру (-i)

За замовчуванням grep враховує регістр символів. Якщо ви хочете ігнорувати регістр, використовуйте параметр -i:

grep -i "error" text.txt

Це буде відповідати “Error”, “ERROR” або будь-яким іншим варіантам регістру.

3. Рекурсивний пошук (-r або -R)

Якщо ви хочете шукати шаблон у файлах у каталозі та його підкаталогах, скористайтеся опцією -r (або -R) для рекурсивного пошуку:

grep -r "error" /var/logs/

Ця команда шукатиме слово “error” у всіх файлах у каталозі /var/logs/ та його підкаталогах.

4. Показати номери рядків (-n)

Опція -n додає до виводу номери рядків, що корисно для швидкого пошуку потрібного шаблону у файлі:

grep -n "error" text.txt

У результаті буде показано, у якому рядку міститься збіг, як показано нижче:

25:під час обробки виниклапомилка

5. Порахувати збіги (-c)

Якщо вас цікавить лише кількість збігів шаблону у файлі, скористайтеся опцією -c, щоб отримати підрахунок збігів замість виводу рядків, що збігаються:

grep -c "error" text.txt

У результаті буде виведено щось на кшталт:

Це означає, що у log.txtтричі з’явився рядок “error” .

6. Інвертувати збіг (-v)

Щоб знайти рядки, які не містять певного шаблону, скористайтеся опцією -v:

grep -v "error" text.txt

Це поверне всі рядки у log.txt, які не містять слова “error”

7. Пошук цілих слів (-w)

Якщо ви хочете шукати цілі слова, а не часткові збіги, використовуйте опцію -w . Наприклад

grep -w "error" log.txt

Це гарантує, що “error” буде знайдено лише як ціле слово, а не як частину інших слів, таких як “error123” або “myerror”

8. Обмежити виведення (-m)

Якщо вам потрібна лише обмежена кількість збігів, ви можете використати параметр -m , щоб вказати, скільки рядків потрібно повернути. Наприклад, щоб отримати лише перші 5 збігів:

grep -m 5 "error" log.txt

9. Виділити збіги (–колір)

Щоб легше бачити, де у виводі зустрічається збіг, ви можете увімкнути кольорове підсвічування за допомогою опції –color :

grep --color "error" log.txt

У більшості емуляторів терміналу це призведе до виділення тексту, що збігається, кольором.

Використання регулярних виразів за допомогою grep

Однією з найпотужніших можливостей grep є підтримка регулярних виразів (regex), які дозволяють шукати шаблони, а не фіксовані рядки.

Основні регулярні вирази

Ось кілька прикладів використання регулярних виразів у grep:

  • Пошук рядків, які починаються з певного шаблону:
    grep "^error" log.txt

    Символ каретки (^) відповідає початку рядка, тому буде знайдено рядки, які починаються з “error”

  • Пошук рядків, які закінчуються певним шаблоном:
    grep "error$" log.txt

    Знак долара ($) збігається з кінцем рядка, тому буде знайдено рядки, які закінчуються на “error”

  • Пошук рядків, що містять цифри:
    grep "[0-9]" log.txt

    Шаблон [0-9] відповідає будь-якій цифрі, тому буде знайдено рядки, що містять цифри.

Розширені регулярні вирази

Для більш розширеного пошуку за шаблоном ви можете скористатися опцією -E, яка вмикає розширені регулярні вирази:

grep -E "error|failure" log.txt

Буде виконано пошук рядків, які містять слова “error” або “failure”. Символ | означає “АБО” у розширених регулярних виразах.

Інші розширені шаблони включають

  • * (нуль або більше входжень)
  • (одне або більше входжень)
  • . (збіг з будь-яким символом)

Наприклад, для пошуку рядків, які містять будь-яке слово, що починається з “err” і закінчується будь-якими символами після нього:

grep -E "err.*" log.txt

Пошук стиснених файлів за допомогою zgrep

Якщо вам потрібно виконати пошук у стиснених файлах (наприклад,.gz ), ви можете скористатися командою zgrep, яка працює подібно до grep, але підтримує стиснені файли:

zgrep "error" log.gz

Ця команда виконає пошук “error” у файлі log.gz, не вимагаючи розпакування файлу вручну.

Поєднання grep з іншими командами

Ви можете комбінувати grep з іншими командами за допомогою труб (|) для створення потужних пошукових процесів. Наприклад:

  • Пошук у результатах іншої команди:Якщо ви хочете шукати процеси, що містять слово “bash”, ви можете скористатися:
    ps aux | grep "bash"
  • Пошук у файлі журналу і підрахунок унікальних збігів:
    grep "error" log.txt | sort | uniq -c

    Це відсортує вивід відповідних рядків і підрахує унікальні збіги.

Висновок

Команда grep – це неймовірно потужний інструмент, який може допомогти вам швидко і ефективно шукати текст і шаблони у файлах. Незалежно від того, чи ви аналізуєте журнали, фільтруєте дані або шукаєте код, оволодіння grep заощадить ваш час і зусилля. Завдяки опціям пошуку без врахування регістру, регулярним виразам і рекурсивному пошуку в каталогах, grep достатньо універсальний, щоб впоратися практично з будь-яким завданням пошуку тексту, яке ви перед ним поставите.

Поєднуючи grep з іншими командами і використовуючи його численні опції, ви можете створювати складні та ефективні пошукові запити, що робить його незамінним інструментом у будь-якій системі на базі Linux або Unix.

Перевірте свої навички на всіх наших хостингових послугах та отримайте знижку 15%!

Використовуйте код під час оформлення замовлення:

Skills