Пошук тексту в файлах 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 sNov 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:
DocumentRoot / var / www / localhost / htdocs / zendsite
Пошук слів у grep
Коли ви шукаєте рядок abc, grep буде виводити також kbabc, abc123, aafrabc32 і тому подібні комбінації. Ви можете змусити grep шукати по вмісту файлів в linux тільки ті рядки, які вимикають шукані слова за допомогою опції -w:
Пошук двох слів
Можна шукати по вмісту файлу не одне слово, а цілих кілька. Щоб шукати два різних слова використовуйте команду egrep:
$ Grep -c `word` / path / to / fileC допомогою опції -n можна виводити номер рядка в якій знайдено входження, наприклад:
1: root: x: 0: 0: root: / root: / bin / bashІнвертований пошук в grep
Команда grep linux може бути використана для пошуку рядків у файлі Linux які не містять вказане слово. Наприклад, вивести тільки ті рядки, які не містять слово пар:
$ Grep -l `primary` * .cКольоровий висновок в grep
Також ви можете змусити програму виділяти іншим кольором входження у висновку:
- Історія команд linux
- Як відкрити текстовий файл linux
- Як знайти нові файли в linux
- Як користуватися blender для початківців
- Як подивитися логи в linux
- Як видалити файл через термінал linux
- Як приховати процес в linux
- Як дізнатися чи встановлений пакет linux
- Як дізнатися версію linux mint
- Використання awk в linux
- Модулі ядра linux
- Команда find - пошук рядка символів в файлі
- Команда find в linux
- Відключаємо пароль sudo в linux
- Очищення системи debian 8
- Команда sort в linux
- Команда echo в linux
- Перенаправлення вводу виводу linux
- Управління процесами в linux
- Типи файлів в linux
- Команда cat linux