Основні приклади використання команди Grep у системах Linux

Grep – це потужна команда UNIX, що дозволяє проводити пошук всередині файлу за різними параметрами.

Вона особливо корисна під час усунення несправностей чи налаштування. Команда grep має величезну кількість опцій та варіантів використання.

Швидше за все, вам ніколи не знадобитися чи не будуть у нагоді всі з них.

Однак в кінцевому підсумку ви будете використовувати декілька команд grep більшу частину часу.

У цій статті перераховані найпоширеніші команди grep із короткими прикладами.

Це корисно, якщо ви вже знайомі з командою grep, але завжди забуваєте, яка опція що робить.

Опціяприклад командиОпис
igrep -i pattern fileПошук буз урахування регістру
Agrep -A n pattern fileПоказати n рядків після
Bgrep -B n pattern fileПоказати n рядків перед
Cgrep -C n pattern fileПоказати n рядків перед і після
vgrep -v pattern fileПоказати лінії, які не збігаються
cgrep -c pattern fileПідрахунок кількості рядків, що збігаються
Igrep -Ipattern fileВідображати лише імена файлів
wgrep -w pattern fileЗбіг точного слова
egrep -e regex fileВідповідність шаблону регулярки
agrep -a pattern fileПошук у бінарних файлах
rgrep -r pattern dirРекурсивний пошук у каталозі

Швидкі приклади використання команди Grep

Ви, напевно, вже знаєте, що для пошуку певного тексту або шаблону у файлі потрібно використовувати команду grep наступним чином:

grep search_pattern filename

Розглянемо кілька найпоширеніших випадків використання команди grep.

Пошук без урахування регістру

За замовчуванням пошук за допомогою grep чутливий до реєстру.

Ви можете ігнорувати відповідність реєстру за допомогою опції -i:

grep -i holmes filename

Таким чином, grep повертатиме рядки, що відповідають і Holmes, і holmes.

Показати рядки до та після збігаються

За умовчанням ви бачите лише рядки, що збігаються.

Але коли ви усуваєте неполадки, корисно побачити кілька рядків до та/або після рядків, що збігаються.

Ви можете використовувати параметр -A, щоб показати рядки після збігу.

Запам’ятайте, A – це “After” (після).

Команда, показана нижче, покаже рядки, що збігаються, а також 5 рядків після збігу.

grep -A 5 search_pattern filename

Аналогічно, ви можете використовувати -B, щоб показати рядки перед збігаються.

Запам’ятайте, що B – це “Before” (До).

Команда, показана нижче покаже 5 рядків перед рядком що збігається разом із ним.

grep -B 5 search_pattern filename

Мені найбільше подобається опція -C, тому що вона показує лінії, які знаходяться до та після збігаються.

Запам’ятайте, що тут C означає “Circle” (Коло).

Команда нижче покаже 5 рядків до рядка що збігається, рядок і 5 рядків після рядка що збігається.

grep -C 5 search_pattern filename

Показати рядки, які не збігаються

Ви можете використовувати grep для відображення всіх рядків, які не відповідають заданому шаблону.

Ця “інвертована відповідність” використовується з опцією -v:

grep -v search_pattern filename

Ви можете комбінувати опції -i та -v.

Підрахунок кількості рядків, що збігаються

Замість того, щоб показувати рядки, що збігаються, ви можете просто дізнатися, скільки рядків відповідає шаблону за допомогою опції -c.

Це мала літера с.

grep -c search_pattern filename

Ви можете комбінувати опції -c та -v, щоб отримати кількість рядків, які не відповідають заданому шаблону.

Звичайно можна використовувати опцію -i, не чутливу до регістру.

Показати номери рядків, що збігаються

Щоб показати номери рядків, що збігаються можна використовувати опцію -n.

grep -n search_pattern filename

Те саме можна зробити з інвертованим пошуком.

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

Ви можете надати grep кілька файлів для пошуку.

grep search_pattern file1 file2

Це може спрацювати, але практичнішим прикладом є пошук у файлах певного типу.

Наприклад, якщо ви хочете шукати рядок тільки в скриптах оболонки (файли, що закінчуються на .sh), ви можете використовувати:

grep search_pattern *.sh

Рекурсивний пошук усіх файлів у каталозі

Ви можете виконати рекурсивний пошук за допомогою опції grep-r.

Вона шукатиме заданий шаблон у всіх файлах у поточному каталозі та його підкаталогах.

grep -r search_pattern directory_path

Показувати лише імена файлів

За замовчуванням grep показує всі рядки що збігаються.

Якщо ви запустили пошук у кількох файлах і хочете побачити лише ті файли, які містять рядок, ви можете використовувати опцію -l.

grep -l search_pattern files_pattern

Скажімо, ви хочете подивитись, які файли Markdown містять слово handbook, ви можете використовувати:

grep -l handbook *.md

Пошук лише повного слова

За замовчуванням grep показує всі рядки, що містять заданий рядок.

Це не завжди потрібне.

Якщо ви шукаєте слово ‘done’, він також покаже рядки, що містять слова ‘doner’ або ‘abandoned’.

Щоб змусити grep шукати тільки повне слово, можна використовувати опцію -w:

grep -w search_string file

Таким чином, при пошуку слова “done” будуть показані лише рядки, що містять “done”, а не “doner” чи “abandoned”.

Пошук за шаблонами регулярних виразів

Можна розширити пошук за допомогою шаблонів regex.

Існує спеціальна опція -e, що дозволяє використовувати шаблони regex, та опція -E, що дозволяє використовувати розширені шаблони regex.

grep -e regex_pattern file

Пошук того чи іншого шаблону

Ви можете шукати кілька шаблонів в одному пошуку grep.

Якщо ви хочете побачити рядки, що містять ті чи інші патерни, ви можете використовувати оператор |

Однак цей спеціальний символ необхідно екранувати таким чином.

grep 'pattern1\|pattern' filename

З оператором OR можна використовувати кілька шаблонів.

Для оператора AND немає спеціальної опції.

Для цього можна використовувати grep кілька разів із перенаправленням пайпу.

Пошук у бінарниках

За замовчуванням Grep ігнорує бінарні файли.

Ви можете змусити його виконувати, як у текстових, використовуючи опцію -a.

grep -a pattern binary_file

Якщо помітили помилки чи неточності, будь ласка, залишіть коментар чи напишіть листа на поштову адресу [email protected]

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *