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

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

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

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

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

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

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

  1. Запустіть файловий менеджер і перемістіться в потрібну папку.
  2. Открытие файлового менеджера в Linux
  3. Натисніть правою кнопкою миші на необхідному файлі і виберіть пункт &171;властивості&187; .
  4. Переход в свойства папки в операционной системе Linux
  5. У вкладці & 171; Основні & 187; ознайомтеся з рядком &171;батьківська папка&187; .
  6. Узнать родительскую папку файла в операционной системе Linux
  7. Тепер запустіть &171;Термінал&187; зручним методом, наприклад, через меню або затисненням комбінації клавіш Ctrl + Alt + T .
  8. Запуск терминала для дальнейшей работы в Linux
  9. Тут перейдіть до директорії через команду cd /home/user/folder , де user & 8212; ім'я Користувача, а folder &8212; назва папки.
  10. Переход к определенной папке через терминал в Linux

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

Применение команды cat в терминале Linux

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

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

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

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

  1. У командному рядку введіть grep word testfile , де word & 8212; шукана інформація, а testfile &8212; назва файлу. Коли робите пошук, перебуваючи за межами папки, вкажіть повний шлях за прикладом /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 , де &171;[0-7]&187; & 8212; діапазон значень, а testfile &8212; назва файлу для сканування.

Искать диапазон цифровых значений в Linux

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

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

Рекурсивный поиск через команду 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

більше статей на цю тему: