Пошук тексту в файлах linux

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

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

Що таке grep?

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

Відео: 8.Linux для Початківців - Команди: find, cut, sort, wc

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

синтаксис Grep

Синтаксис команди виглядає наступним чином:

$ grep [Опції] шаблон [ім`я файлу...]

або:

$ команда | grep [Опції] шаблон

  • Опції - це додаткові параметри, за допомогою яких вказується різні настройки, пошуку і виведення, наприклад кількість рядків або режим інверсії.
  • шаблон - це будь-який рядок або регулярний вираз, за ​​яким вестиметься пошук
  • Файл та команда - це те місце де буде вестися пошук. Як ви побачите далі grep дозволяє шукати в декількох файлах і навіть в каталозі використовуючи рекурсивний режим.

Як бачите grep вміє не тільки виконувати пошук в файлах linux, але і може фільтрувати стандартний висновок, це дуже зручна функція, коли потрібно вибрати тільки помилки з логів або знайти PID процесу в численному виведення утиліти ps.

Опції




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

  • -b - показувати номер блоку перед рядком;
  • -c - підрахувати кількість входжень шаблону;
  • -h - не виводити ім`я файлу в результатах пошуку всередині файлів Linux;
  • -i - не враховувати регістр;
  • - l - відобразити тільки імена файлів, в яких знайдено шаблон;
  • -n - показувати номер рядка у файлі;
  • -s - Більше не показувати повідомлення про помилки;
  • -v - інвертувати пошук, видавати всі рядки крім тих що містять шаблон;
  • -w - шукати шаблон, як слово, оточене пробілами;
  • -e - використовувати регулярні вирази при пошуку;
  • -An - показати входження і n рядків до нього;
  • -Bn - показати входження і n рядків після нього;
  • -Cn - показати n рядків до і після входження;

Все найосновніші опції розглянули, і навіть більше, тепер перейдемо до прикладів роботи команди grep linux.

Відео: Linux відео

приклади використання

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

Пошук тексту в файлах

У першому прикладі ми будемо шукати користувача User в файлі паролів Linux. Щоб виконати пошук тексту grep в файлі / etc / passwd введіть наступну команду:

User: x: 1000: 1000: User ,,,: / home / User: / bin / bash

А тепер не будемо враховувати регістр під час пошуку. Тоді комбінації ABC, abc та Abc з точки зору програми будуть однакові:

$ Grep -A4 "EE" /var/log/xorg.0.log


Виведе рядок з входженням і 4 рядки після неї.

$ Grep -C2 "EE" /var/log/xorg.0.log

Виведе по два рядки з верху і знизу від входження.

Регулярні вирази в grep

Регулярні вирази grep - дуже потужний інструмент в рази розширює можливості пошуку тексту в файлах grep. Для активації цього режиму використовуйте опцію -e. Розглянемо кілька прикладів:

Пошук входження на початку рядка за допомогою спецсимволи "^", наприклад, виведемо всі повідомлення за листопад:

Nov 10 1:12:55 gs123 ntpd [2241]: time reset +0.177479 s
Nov 10 1:17:17 gs123 ntpd [2241]: synchronized to LOCAL (0), stratum 10

Пошук в кінці рядка, спецсимвол "$":

Jul 12 17:01:09 cloneme kernel: Kernel log daemon terminating.
Oct 28 6:29:54 cloneme kernel: Kernel log daemon terminating.

Знайдемо всі рядки які містять цифри:

$ Grep -r "mydomain.com" / etc / apache2 /

У висновку ви отримаєте:


/etc/apache2/vhosts.d/zendsite_vhost.conf: ServerName zendsite.localhost
/etc/apache2/vhosts.d/zendsite_vhost.conf: DocumentRoot / var / www / localhost / htdocs / zendsite
/etc/apache2/vhosts.d/zendsite_vhost.conf:

Тут перед знайденої рядком зазначено ім`я файлу в якому вона була знайдена. Висновок імені файлу легко відключити за допомогою опції -h:

$ Grep -h -r "zendsite" / etc / apache2 /
DocumentRoot / var / www / localhost / htdocs / zendsite

Пошук слів у grep

Коли ви шукаєте рядок abc, grep буде виводити також kbabc, abc123, aafrabc32 і тому подібні комбінації. Ви можете змусити grep шукати по вмісту файлів в linux тільки ті рядки, які вимикають шукані слова за допомогою опції -w:

grep -w "abc" имя_файла

Пошук двох слів

Можна шукати по вмісту файлу не одне слово, а цілих кілька. Щоб шукати два різних слова використовуйте команду egrep:

$ Grep -c `word` / path / to / file

C допомогою опції -n можна виводити номер рядка в якій знайдено входження, наприклад:

1: root: x: 0: 0: root: / root: / bin / bash

Інвертований пошук в grep

Команда grep linux може бути використана для пошуку рядків у файлі Linux які не містять вказане слово. Наприклад, вивести тільки ті рядки, які не містять слово пар:

$ Grep -l `primary` * .c

Кольоровий висновок в grep

Також ви можете змусити програму виділяти іншим кольором входження у висновку:

Поділися в соціальних мережах:

Схожі
Як приховати процес в linuxЯк приховати процес в linux
Як дізнатися чи встановлений пакет linuxЯк дізнатися чи встановлений пакет linux
Список процесів linuxСписок процесів linux
Команда sort в linuxКоманда sort в linux
Команда cat linuxКоманда cat linux
Команда find - пошук рядка символів в файліКоманда find - пошук рядка символів в файлі
Команда find в linuxКоманда find в linux
Як відкрити текстовий файл linuxЯк відкрити текстовий файл linux
Історія команд linuxІсторія команд linux
Як подивитися логи в linuxЯк подивитися логи в linux
» » Пошук тексту в файлах linux