Зміст
Іноді користувачі стикаються з необхідністю здійснення пошуку певної інформації всередині будь-яких файлів. Часто конфігураційні документи або інші об'ємні дані вміщають в собі велику кількість рядків, тому вручну відшукати потрібні дані не виходить. Тоді на допомогу приходить одна з вбудованих команд в операційні системи на Linux, яка дозволить виконати знаходження рядків буквально за лічені секунди.
Використовуємо команду grep в Linux
Що стосується відмінностей між дистрибутивами Лінукс, в цьому випадку вони не грають ніякої ролі, оскільки цікавить Вас команда grep за замовчуванням доступна в більшості збірок і застосовується абсолютно однаково. Сьогодні ми б хотіли обговорити не тільки дію grep , але і розібрати основні аргументи, які дозволяють значно спростити процедуру пошуку.
Читайте також: шукаємо файли в Linux
Підготовчі роботи
Всі подальші дії будуть проводитися через стандартну консоль, вона ж дозволяє відкривати файли тільки шляхом вказівки повного шляху до них або якщо &171;Термінал&187; запущений з необхідної директорії. Дізнатися батьківську папку файлу і перейти до неї в консолі можна так:
- Запустіть файловий менеджер і перемістіться в потрібну папку.
- Натисніть правою кнопкою миші на необхідному файлі і виберіть пункт &171;властивості&187; .
- У вкладці & 171; Основні & 187; ознайомтеся з рядком &171;батьківська папка&187; .
- Тепер запустіть &171;Термінал&187; зручним методом, наприклад, через меню або затисненням комбінації клавіш Ctrl + Alt + T .
- Тут перейдіть до директорії через команду
cd /home/user/folder
, де user & 8212; ім'я Користувача, а folder &8212; назва папки.
Залучіть команду cat + назва файлу
, якщо ви хочете переглянути повний вміст. Детальні інструкції по роботі з цією командою шукайте в іншій нашій статті за посиланням нижче.
Детальніше: приклади команди cat в Linux
Завдяки виконанню наведених вище дій ви можете використовувати grep , перебуваючи в потрібній директорії, без вказівки повного шляху до файлу.
Стандартний пошук вмісту
Перш ніж переходити до розгляду всіх доступних аргументів, важливо відзначити і звичайний пошук по вмісту. Він буде корисний в тих моментах, коли необхідно знайти простий збіг за значенням і вивести на екран всі відповідні рядки.
- У командному рядку введіть
grep word testfile
, де word & 8212; шукана інформація, а testfile &8212; назва файлу. Коли робите пошук, перебуваючи за межами папки, вкажіть повний шлях за прикладом/home/user/folder/filename
. Після введення команди натисніть на клавішу Enter . - Залишилося тільки ознайомитися з доступними варіантами. На екрані відобразяться повні рядки, а ключові значення будуть виділені червоним кольором.
- Важливо також враховувати регістр літер, оскільки кодування Linux не оптимізоване для пошуку без урахування великих чи малих символів. Якщо ви хочете обійти визначення регістра, впишіть
grep -i "word" testfile
. - Як бачите, на наступному скріншоті результат змінився і додав ще один новий рядок.
Пошук із захопленням рядків
Іноді користувачам необхідно знайти не тільки точний збіг по рядках, але і дізнатися інформацію, яка йде після них, наприклад, при звіті про певну помилку. Тоді правильним рішенням буде застосувати атрибути. Впишіть в консоль grep -A3 "word" testfile
, щоб включити в результат і три наступні рядки після збігу. Ви можете написати
-A4
, тоді будуть захоплені чотири рядки, обмежень ніяких немає.
Якщо замість -A
ви застосуєте аргумент
- B + кількість рядків
, в результаті відобразяться дані, що знаходяться до точки входження.
Аргумент - з
, у свою чергу, захоплює рядки навколо ключового слова.
Нижче ви можете побачити приклади присвоєння зазначених аргументів. Зверніть увагу, що обов'язково потрібно враховувати регістр і проставляти подвійні лапки.
Grep -B3 "word" testfile
grep -C3 "word" testfile
Пошук ключових слів на початку та в кінці рядків
Потреба визначення ключового слова, яке стоїть на початку або в кінці рядка, найчастіше виникає під час роботи з конфігураційними файлами, де кожна лінія відповідає за один параметр. Для того щоб побачити точне входження на початку, необхідно прописати grep "^word" testfile
. Знак
^
якраз і відповідає за застосування цієї опції.
Пошук вмісту в кінці рядків відбувається приблизно за таким же принципом, тільки в лапках слід додати знак $
, і команда набуде такого вигляду:
grep "word$" testfile
.
Пошук чисел
При пошуку потрібних значень Користувач не завжди має інформацію щодо точного слова, присутнього в рядку. Тоді процедуру пошуку можна проводити через числа, що іноді значно спрощує завдання. Треба лише задіяти розглянуту команду у вигляді grep "[0-7]" testfile
, де
&171;[0-7]&187;
& 8212; діапазон значень, а
testfile
&8212; назва файлу для сканування.
Аналіз всіх файлів директорії
Сканування всіх об'єктів, що знаходяться в одній папці, називається рекурсивним. Користувачеві потрібно застосувати тільки один аргумент, який проведений аналіз всіх файлів папки і виведе на екран відповідні рядки і їх розташування. Знадобиться ввести grep -r "word" /home/user/folder
, де
/home/user/folder
&8212; шлях до директорії для сканування.
Блакитним кольором буде відображатися місце зберігання файлу, а якщо хочете отримати рядки без цієї інформації, призначте ще один аргумент, щоб команда вийшла такою grep-h - r" word " + шлях до папки
.
Точний пошук за словами
На початку статті ми вже говорили про звичайний пошук слів. Однак при такому методі в результатах будуть висвічуватися додаткові комбінації. Наприклад, ви знаходите слово User
, але команда також відобразить User
123
,
Password
User та інші збіги, якщо такі є. Щоб уникнути такого результату, призначте аргумент
-w
(
grep-w "word" + ім'я файлу або його розташування
).
Виконується ця опція і при потребі пошуку відразу декількох точних ключових слів. В такому випадку введіть egrep -w 'word1|word2' testifile
. Зверніть увагу, що в цьому випадку до
grep
додається буква
e
, а лапки ставляться Одинарні.
Пошук рядків без певного слова
Розглянута утиліта вміє не тільки знаходити слова в файлах, але і виводити рядки, в яких відсутня задане користувачем значення. Тоді перед введенням ключового значення і файлу додається -v
. Завдяки їй при активації команди ви побачите тільки відповідні дані.
Синтаксис grep зібрав в собі ще кілька аргументів, про які можна коротко розповісти:
аргументи | опис |
---|---|
-I | показувати тільки назви файлів, що підходять під критерій пошуку |
-s | вимкнути сповіщення про знайдені помилки |
-n | відображати номер рядка у файлі |
-b | показувати номер блоку перед рядком |
Ніщо не заважає вам застосовувати кілька аргументів для одного знаходження, просто вводите їх через пробіл, не забуваючи враховувати регістр.
Сьогодні ми детально розібрали команду grep , доступну в дистрибутивах на Linux. Вона є однією зі стандартних і часто використовуються. Прочитати про інші популярні інструменти та їх синтаксис ви можете в окремому нашому матеріалі за наступним посиланням.
Читайте також: Часто використовувані команди в «терміналі» Linux