Приклади команди grep в Linux

Іноді користувачі стикаються з необхідністю здійснення пошуку певної інформації всередині будь-яких файлів. Часто конфігураційні документи або інші об'ємні дані вміщують в собі велику кількість рядків, тому вручну відшукати потрібні дані не виходить. Тоді на допомогу приходить одна з вбудованих команд в операційні системи на Linux, яка дозволить виконати знаходження рядків буквально за лічені секунди.

Використовуємо команду grep в Linux

Що стосується відмінностей між збірками Лінукс, в цьому випадку вони не грають ніякої ролі, оскільки цікавить вас команда grep за замовчуванням доступна в більшості збірок і застосовується абсолютно однаково. Сьогодні ми б хотіли обговорити не тільки дію grep, але і розібрати основні аргументи, які дозволяють значно спростити процедуру пошуку.

Читайте також: Шукаємо файли в Linux

Підготовчі роботи

Всі подальші дії будуть проводитися через стандартну консоль, вона ж дозволяє відкривати файли тільки шляхом вказівки повного шляху до них або якщо «Термінал» запущений з необхідною директорії. Дізнатися батьківську папку файлу і перейти до неї в консолі можна так:

  1. Запустіть файловий менеджер і перейдіть в потрібну папку.
  2. Відкриття файлового менеджера в Linux

  3. Натисніть правою кнопкою миші на необхідному файлі і виберіть пункт «Властивості».
  4. Перехід в властивості папки в операційній системі Linux

  5. У вкладці «Основні» ознайомтеся з рядком «Батьківська папка».
  6. Дізнатися батьківську папку файлу в операційній системі Linux

  7. Тепер запустіть «Термінал» зручним методом, наприклад, через меню або затисненням комбінації клавіш Ctrl + Alt + T.
  8. Запуск терміналу для подальшої роботи в Linux

  9. Тут перейдіть до директорії через команду cd /home/user/folder , де user - ім'я користувача, а folder - назва папки.
  10. Перехід до певної папки через термінал в Linux

Задіюйте команду cat + название файла , якщо хочете переглянути повний вміст. Детальні інструкції по роботі з цією командою шукайте в інший нашій статті по посиланню нижче.

Застосування команди cat в терміналі Linux

Детальніше: Приклади команди cat в Linux

Завдяки виконанню наведених вище дій ви можете використовувати grep, перебуваючи в потрібній директорії, без вказівки повного шляху до файлу.

Стандартний пошук по вмісту

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

  1. У командному рядку введіть grep word testfile , де word - шукана інформація, а testfile - назва файлу. Коли робите пошук, перебуваючи за межами папки, вкажіть повний шлях за прикладом /home/user/folder/filename . Після введення команди натисніть на клавішу Enter.
  2. Звичайний пошук через команду grep в Linux

  3. Залишилося тільки ознайомитися з доступними варіантами. На екрані відобразяться повні рядки, а ключові значення будуть виділені червоним кольором.
  4. Відображення результатів звичайного пошуку через команду grep в Linux

  5. Важливо враховувати і регістр букв, оскільки кодування Linux не оптимізована для пошуку без урахування великих або маленьких символів. Якщо ви хочете обійти визначення регістра, впишіть grep -i "word" testfile .
  6. Пошук вмісту файлу без урахування регістру в Linux

  7. Як бачите, на наступному скріншоті результат змінився і додалася ще одна нова рядок.
  8. Відображення знайдених слів без урахування регістру в Linux

Пошук із захопленням рядків

Іноді користувачам необхідно знайти не тільки точний збіг по рядках, але і дізнатися інформацію, яка йде після них, наприклад, при звіті про певну помилку. Тоді правильним рішенням буде застосувати атрибути. Впишіть в консоль grep -A3 "word" testfile , щоб включити в результат і три наступні рядки після збігу. Ви можете написати -A4 , тоді будуть захоплені чотири рядки, обмежень ніяких немає.

Відобразити кількість рядків після ключового слова в Linux

Якщо замість -A ви застосуєте аргумент -B + количество строк , в результаті відобразяться дані, що знаходяться до точки входження.

Відобразити кількість рядків до ключового слова в Linux

Аргумент , в свою чергу, захоплює рядки навколо ключового слова.

Відобразити навколишні рядка ключового слова в Linux

Нижче ви можете побачити приклади привласнення зазначених аргументів. Зверніть увагу, що обов'язково потрібно враховувати регістр і проставляти подвійні лапки.

grep -B3 "word" testfile
grep -C3 "word" testfile

Пошук ключових слів на початку і в кінці рядків

Потреба визначення ключового слова, яке стоїть на початку або в кінці рядка, найчастіше виникає під час роботи з файлами, де кожна лінія відповідає за один параметр. Для того щоб побачити точне входження на початку, необхідно прописати grep "^word" testfile . Знак ^ якраз і відповідає за застосування цієї опції.

Шукати за ключовим словом на початку рядка Linux

Пошук вмісту в кінці рядків відбувається приблизно за таким же принципом, тільки в лапках слід додати знак $, і команда знайде такий вигляд: grep "word$" testfile .

Шукати за ключовим словом в кінці рядка Linux

Пошук чисел

При пошуку потрібних значень користувач не завжди має інформацію щодо точного слова, присутнього в рядку. Тоді процедуру пошуку можна робити через числа, що іноді значно спрощує завдання. Треба лише задіяти розглянуту команду у вигляді grep "[0-7]" testfile , де «[0-7]» - діапазон значень, а testfile - назва файлу для сканування.

Шукати діапазон цифрових значень в Linux

Аналіз всіх файлів директорії

Сканування всіх об'єктів, що знаходяться в одній папці, називається рекурсивним. Користувачеві потрібно застосувати тільки один аргумент, який проведено аналіз всіх файлів папки і виведе на екран відповідні рядки і їх розташування. Знадобиться ввести grep -r "word" /home/user/folder , де / home / user / folder - шлях до директорії для сканування.

Рекурсивний пошук через команду grep в Linux

Блакитним кольором буде відображатися місце зберігання файлу, а якщо хочете отримати рядки без цієї інформації, надайте ще один аргумент, щоб команда вийшла такою grep -h -r "word" + путь к папке .

Рекурсивний пошук без відображення шляху до файлу в Linux

Точний пошук за словами

На початку статті ми вже говорили про звичайному пошуку по словам. Однак при такому методі в результатах будуть висвітлюватися додаткові комбінації. Наприклад, ви знаходите слово User, але команда відобразить ще й User 123, Password User і інші збіги, якщо такі є. Щоб уникнути такого результату, надайте аргумент -w ( grep -w "word" + имя файла или его расположение ).

Відображати тільки точні входження в Linux

Виконується ця опція і при потребі пошуку відразу декількох точних ключових слів. У такому випадку введіть egrep -w 'word1|word2' testifile . Зверніть увагу, що в цьому випадку до grep додається буква e, а лапки ставляться одинарні.

Відображати кілька точних входжень в Linux

Пошук рядків без певного слова

Вже згадана утиліта вміє не тільки знаходити слова в файлах, але і виводити рядки, в яких відсутня заданий користувачем значення. Тоді перед введенням ключового значення і файлу додається -v . Завдяки їй при активації команди ви побачите тільки відповідні дані.

Пошук рядків не мають зазначеного слова в Linux

Синтаксис grep зібрав в собі ще кілька аргументів, про які можна коротко розповісти:

  • -I - показувати тільки назви файлів, які підходять під критерій пошуку;
  • -s - відключити повідомлення про знайдені помилки;
  • -n - відображати номер рядка у файлі;
  • -b - показувати номер блоку перед рядком.

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

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

Читайте також: Часто використовувані команди в «Терміналі» Linux