grep

Команда Grep в Linux

Команда Grep в Linux
Команда Grep (глобальний регулярний вираз) - найпотужніша та регулярно використовувана утиліта командного рядка Linux. Використовуючи Grep, ви можете шукати корисну інформацію, вказавши критерії пошуку. Він шукає певний шаблон вираження у вказаному файлі. Знайшовши збіг, він друкує всі рядки файлу, що відповідає вказаному шаблону. Це стане в нагоді, коли вам доведеться фільтрувати великі файли журналів.

У цій статті ми пояснимо використання утиліти 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 може заощадити багато часу, якщо вам потрібно переглянути великі конфігураційні файли або файли журналів та переглянути з них корисну інформацію.

Як використовувати Xdotool для стимулювання клацань миші та натискань клавіш у Linux
Xdotool - це безкоштовний інструмент командного рядка з відкритим кодом для імітації клацань миші та натискань клавіш. У цій статті буде розглянуто ко...
Топ 5 ергономічних продуктів для комп'ютерної миші для Linux
Чи викликає тривале використання комп’ютера біль у зап’ясті або пальцях? Ви страждаєте від ригідності суглобів і вам постійно доводиться трясти руки? ...
How to Change Mouse and Touchpad Settings Using Xinput in Linux
Most Linux distributions ship with “libinput” library by default to handle input events on a system. It can process input events on both Wayland and X...