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 після знайденого входження використовуйте команду: