Команда grep. Примеры использования

grep - утилита командной строки, которая выполняет поиск по фразе или регулярному выражению в текстовых файлах или в потоке вывода.

Список ключей для команды находится в конце статьи.

Пример 1: Фильтр запущенных процессов

$ ps ax | grep php
#Пример результата работы:
 708 pts/0    R+      0:00 grep php
 2123 ?        Ss     0:43 php /var/www/test.php
12632 ?        S      0:09 /usr/bin/php5.6 /var/www/test2.php
12633 ?        S      0:09 php /var/www/test3.php reload

ps ax - выводит список запущенных процессов, с помощью команды grep можно отфильтровать этот список по названию процесса или названию команды запустивший этот процесс, в данном случаи это php.

Пример 2: Рекурсивный поиск в каталоге

grep -inr 'test' /need/path
#Пример результата работы:
/need/path/test.php:16: function test(a,b) {
/need/path/test2.php:3: test(2,4);
/need/path/test2.php:157: test($a,$b);

В данном случаи ищется слово test в директории /need/path, поиск регистранезависимый и рекрусивный. В результате указывается название файла в котором было найдено совпадение, номер строки и содержимое самой строки. 

Пример 3: Анализ файла запросов к серверу (access.log)

grep -o '\([0-9]\{1,3\}\.\)\{3\}\([0-9]\{1,3\}\)\{1\}' access.mass-hosting.log | sort | uniq -c | sort

Данный пример выбирает все ip адресса из файла access.mass-hosting.log сортирует их, далее объединяет и выводит в порядке возростание сколько раз каждый из них встречается в файле.

Пример 4: Поиск среди файлов с определенным расширением

grep -inr --include="*.css" 'header' /need/path/
/need/path/css/main.css:22:#header

Происходит поиск слова header только среди файлов с расширением css, поиск регистранезависимый и рекрусивный. В результате указывается название файла в котором было найдено совпадение, номер строки и содержимое самой строки.

Примеры поиска среди файлов с другими расширениями:

grep -inr --include="*.php" 'header' /need/path/

grep -inr --include="*.js" 'header' /need/path/

Пример 5: Исключить директорию из поиска

grep -inr --exclude-dir=/need/path/exclude 'test' /need/path

В данном примере происходит поиск заданного текста в директории /need/path, но при этом директория /need/path/exclude исключена из поиска.
На самом деле в работе часто возникает подобная ситуация, когда нужно произвести поиск по файлам, но при этом исключить папку какую-то папку, например с кешем или логами.

Ключи команды grep

 Ключ Значение
-V  Выводи реверсивные результаты. Вместо того чтобы вывести строки где искомое было найдено — выводи те строки где искомой подстроки нет.
-C  Отключает стандартный способ вывода результата и вместо этого отображает только число обозначающее количество найденых строк.
-i  Делает поиск регистронезависимым 
-n Выдает перед каждой строкой ее номер в файле (строки нумеруются с 1).
-w  Ведет поиск по цельным словам. Например при обычном поиске строки ‘wood’ grep может найти слово ‘hollywood’. А если используется данный ключ то будут найдены только строки где есть слово ‘wood’.
-l  Выводит только имена файлов где была найдена строка.
-r  Производит поиск рекурсивно по всем поддиректориям.
-o  Печатает только часть строки подходящую под условие регулярного выражения.
--include= Позволяет указать, что поиск нужно производить только среди файлов с определенным расширением (см. Пример 4).
--exclude-dir= Исключает указанную директорию из поиска (см. Пример 5)

Ссылки

Документация по grep на русском.

Рубрики: Linux

Если есть вопросы, что-то в статье не понятно или нашли ошибку, напишите об этом в комментариях, все комментарии читаются и по возможности материал будет доработан.
Популярные статьи

Команда grep. Примеры использования

grep - удобная и быстрая команда, здесь приведены примеры как произвести рекурсивный поиск в каталоге, поиск среди запущенных процессов и другие.

Битрикс 24 удалить сделку

В статье приводятся способы удаления сделки.

CSS простой горизонтальный слайдер

В статье приводится пример кода для создания простого горизонтального слайдера с использованием CSS и небольшим количеством JS кода. Для реализации потребуется всего около 60 строк стилей и js кода.

Bitrix подключить класс компонента

В статье приводится пример того как можно подключить только компонент битрикс без подключения его шаблона, чтобы можно было вызвать его метод или получить значения свойств

Bitrix выполнить произвольный sql запрос

В статье приведен пример как выполнить произвольный sql запрос используя стандартные средства Bitrix

Bitrix подключить модуль

Так как bitrix состоит из большого количества различных модулей, знать как их правильно подключать просто необходимо.

Комментарии

Влад [01.11.2022]
Параметр --include очень помогает сузить поиск
Name [02.06.2023]
Очень удобная команда, парой находишь искомое в совершенно неожиданных местах)
Данный сайт использует файлы cookies. Продолжая просмотр сайта, вы соглашаетесь с использованием файлов cookies.
ОК