У цій статті ми пояснимо використання утиліти grep на різних прикладах. Ми будемо використовувати Debian 10 для пояснення команд і методів, згаданих у цій статті.
Встановлення Grep
Grep поставляється в більшості дистрибутивів Linux. Однак у випадку, якщо він відсутній у вашій системі, ви можете встановити його, використовуючи такий спосіб у терміналі:
$ sudo apt-get install grepВикористання Grep
Ось основний синтаксис команди grep. Він починається з grep, за яким слідують деякі параметри та критерії пошуку, а потім закінчується назвою файлу.
$ grep [параметри] Шаблон [ФАЙЛ…]Пошук файлів
Для пошуку імені файлу в каталозі, який містить певний рядок, ви можете використовувати grep наступним чином:
$ ls -l | grep -i “рядокНаприклад, для пошуку імені файлу, що містить рядок “тест“, Команда буде такою:
$ ls -l | тест grep -iЦя команда перераховує всі файли, що містять рядок “тест".
Шукати рядок у файлі
Для пошуку рядка в певному файлі можна використовувати такий синтаксис команди:
$ grep “рядок” імені файлуНаприклад, для пошуку рядка “тест”У файлі з іменем тестовий файл1, ми використали наступну команду:
$ grep тестовий файл “співробітника” 1
Наведений вище результат повернув речення з тестовий файл1 що містить рядок “працівник".
Шукати рядок у декількох файлах
Для пошуку рядка в декількох файлах можна використовувати такий синтаксис команди:
$ grep “рядок” ім’я файлу1 ім’я файлу2Наприклад, для пошуку рядка “співробітник” у наших двох файлах testfile1 та testfile2, ми використали таку команду:
$ grep “співробітник” testfile1 testfile2
У наведеній вище команді будуть перераховані всі рядки, що містять рядок “worker” із файлів testfile1 і testfile2.
Ви також можете використовувати символ підстановки, якщо всі назви файлів починаються з одного і того ж тексту.
$ grep "рядок" ім'я файлу *Мовляв, якщо взяти наведений вище приклад, в якому були наші імена файлів testfile1 і testfile2 , команда буде такою:
$ grep тестовий файл працівника *
Шукайте рядок у файлі, ігноруючи регістр рядка
Найчастіше ви стикалися з тим, що коли щось шукаєте за допомогою grep, але не отримуєте вихідних даних. Це відбувається через невідповідність регістру під час пошуку рядка. Як у нашому прикладі, якщо ми помилково використовуємо “Співробітник" замість "працівник”, Він поверне нуль, оскільки наш файл містить рядок“працівник”Малими літерами.
Ви можете сказати grep ігнорувати випадок рядка пошуку, використовуючи прапор -i після grep таким чином:
$ grep -i "рядок" ім'я файлу
Використовуючи прапорець -i, команда виконує пошук без урахування регістру та повертає всі рядки, що містять рядок “працівник”У ньому без урахування букви великі чи малі.
Шукати за допомогою регулярного виразу
При правильному використанні регулярний вираз є дуже ефективною функцією grep. За допомогою команди Grep ви можете визначити регулярний вираз із початковим та кінцевим ключовими словами. Роблячи це, вам не потрібно буде вводити весь рядок командою grep. Для цього можна використати наступний синтаксис.
$ grep “початкове ключове слово.* endKeyword ”назва файлуНаприклад, для пошуку рядка у файлі з назвою testfile1, який починається з рядка “this” і закінчується рядком “data”, ми використали таку команду:
$ grep “це.* дані ”testfile1
Він надрукує весь рядок із тестовий файл1 містить вираз (початкове ключове слово "це" та кінцеве ключове слово "дані").
Друк певної кількості рядків після / перед пошуковим рядком
Ви також можете відобразити певну кількість рядків у файлі до / після збігу рядків разом із відповідним рядком. Для цього можна використовувати наступний синтаксис:
$ grep -AВін буде відображати N кількість рядків після відповідності рядка у вказаному файлі, включаючи відповідний рядок.
Наприклад, це наш зразок файлу з назвою тестовий файл2.
Наступна команда виведе відповідний рядок, що містить рядок “працівник”, А також 2 рядки після нього.
$ grep -A 2 -i тестовий файл “працівника ”2
Аналогічно, щоб відобразити N кількість рядків перед відповідним рядком у певному файлі, використовуйте такий синтаксис:
$ grep -BДля відображення N кількості рядків навколо рядка у певному файлі використовуйте такий синтаксис:
$ grep -CВиділення пошуку
Grep за замовчуванням друкує відповідні рядки, але не показує, яка частина рядка відповідає. Якщо ви використовуєте параметр -color із grep, він покаже, де у вашому файлі відображаються обробні рядки. Grep за замовчуванням використовує червоний колір для виділення.
Для цього можна використовувати наступний синтаксис:
$ grep “рядок” імені файлу --color
Підрахунок кількості збігів
Якщо ви хочете підрахувати, скільки разів певне слово з’являється у певному файлі, ви можете скористатися опцією grep із -c. Він повертає лише кількість збігів, а не самі збіги. Для цього можна використовувати наступний синтаксис:
$ grep -c “рядок” імені файлуОсь наш зразок файлу виглядає так:
Далі наведено приклад команди, яка повернула кількість разів слова файл з'явився у файлі з іменем тестовий файл3.
Перевернутий пошук
Іноді потрібно виконати зворотний пошук, який відображає всі рядки, крім відповідних введеним. Для цього просто використовуйте прапор -v, а потім grep:
$ grep -v "рядок" імені файлуНаприклад, для відображення всіх рядків у файлі тестовий файл3 які не містять у собі слова “рахунок”, ми використали таку команду:
$ grep -v тестовий файл облікового запису3
Використання Grep з іншими командами
Grep також може використовуватися для фільтрації необхідного результату з різних команд, що виводяться. Наприклад, з “apt -встановлений список ” виведення команди, ви хочете знайти лише ті пакети, які були встановлені автоматично, результат можна відфільтрувати за допомогою grep наступним чином:
$ apt --встановлений список | grep автоматичний
Аналогічним чином, lscpu надає детальну інформацію про центральний процесор. Якщо вас просто цікавить інформація про архітектуру процесора, ви можете відфільтрувати її за допомогою наступної команди:
$ lscpu | grep Архітектура
У цій статті ми описали кілька прикладів, які допоможуть вам зрозуміти команди grep та їх використання в різних умовах. Надання міцної команди grep може заощадити багато часу, якщо вам потрібно переглянути великі конфігураційні файли або файли журналів та переглянути з них корисну інформацію.