Grep - пошук в linux, приклади - debian help

1. Трохи про grep

Команда grep (global regular expression print) залишається однією з найбільш універсальних команд в оточенні командного рядка Linux. Це відбувається тому що grep є надзвичайно потужною утилітою яка дає користувачам можливість сортувати введення на основі складних правил, тим самим роблячи її популярним сполучною ланкою в конвеєрі команд. Grep в основному використовується для пошуку тексту як в даних, що надходять на стандартний вхід, так і в зазначених файлах на предмет рядків містять зазначені слова або підрядка.

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

Нижче представлені приклади використання grep з базовим синтаксисом:

3. Як використовувати grep для пошуку в файлах

Спробуємо знайти користувача "vasya" у файлі passwd. Для пошуку в файлі / etc / passwd інформації про користувача "vasya" необхідно використовувати наступну команду:

Також ми можемо попросити grep здійснювати пошук ігноруючи регістр букв, тобто не роблячи різниці між великими та маленькими літерами. Для цього використовується параметр -i, як показано нижче:

4. Рекурсивне використання grep

Якщо у вас є велика кількість текстових файлів в ряді директорій і піддиректорій, наприклад, конфігураційних файлів apache в / etc / apache2 і потрібно знайти файл де міститься певний текст, то варто використовувати параметр -r щоб здійснити рекурсивний пошук. Тобто пошуку буде здійснено по всіх файлів в ієрархії директорій:

Також можна використовувати цей параметр у верхньому регістрі. Тобто можна писати -R. Різниця в тому що при використанні -r не відбувається обробка символічних посилань, а при використанні -R - відбувається. Приклад використання:

/etc/apache2/sites-available/debian-help.ru: ServerName debian-help.ru /etc/apache2/sites-available/debian-help.ru: ServerAlias ​​www.debian-help.ru

Як можна бачити результат складається з імені файлу, де була знайдена рядок і самої рядки. Включення в висновок імен файлів можна з легкістю придушити за допомогою параметра -h, як показано нижче:

ServerName debian-help.ru ServerAlias ​​www.debian-help.ru

5. Використання grep для пошуку тільки цілих слів

Коли ви шукайте qwe, grep вибере все входження даного поєднання, наприклад, qwerty, qwe123, 345qwerty і безліч інших комбінацій. Ви можете вказати, щоб grep вибирав тільки ті рядки, які містять точне включення у вигляді цілого слова. Для цього використовуйте параметр -w:

6. Як шукати кілька різних слів

Для пошуку двох або більше різних слів ви можете використовувати команду egrep наступним чином:

Або варіант з просто grep:

7. Підрахунок кількості рядків, що містять входження

grep може повідомляти скільки рядків містять вказане поєднання. Для цього скористайтеся параметром -c (count):

На додаток, можна використовувати параметр -n щоб змусити grep виводити номери рядків у файлі, в яких було знайдено включення:

8. Інвертний пошук

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

Можна виключити що-небудь з виведення пошуку застосувавши конвеєр:

9. Як виводити тільки імена файлів в яких є включення слова

Для виведення тільки імен файлів потрібно використовувати параметр -l, наприклад, так:

10. Пошук всіх файлів що містять слово у всіх файлах і піддиректоріях

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

11. Висновок рядків перед і після знайденого входження

Для виведення декількох рядків перед входженням використовується параметри -A, а після того як вести -B.

Наприклад, щоб вивести 5 рядків перед і 10 після знайденого входження використовуйте команду:

Схожі статті