Использование команды grep в Linux
Что такое греп?
Утилита grep, с которой мы сегодня познакомимся, — это инструмент Unix, принадлежащий к тому же семейству, что и утилиты egrep и fgrep. Все эти инструменты Unix предназначены для выполнения повторяющихся задач поиска в файлах и тексте. Вы можете искать файлы и их содержимое для получения полезной информации, указав определенные критерии поиска с помощью команды grep.
Итак, они говорят, что GREP означает «Глобальная печать регулярных выражений», но откуда взялась эта команда «grep»? По сути, grep происходит от конкретной команды очень простого и почтенного текстового редактора Unix под названием ed. Вот как работает команда ed:
г/ре/п
Цель команды очень похожа на то, что мы подразумеваем под поиском в grep. Эта команда извлекает все строки файла, соответствующие определенному текстовому шаблону.
Давайте еще немного изучим команду grep. В этой статье мы объясним установку утилиты grep и представим несколько примеров, с помощью которых вы сможете точно узнать, как и в каком сценарии ее можно использовать.
Мы выполнили команды и процедуры, упомянутые в этой статье, в системе Ubuntu 18.04 LTS.
Установить grep
Хотя утилита grep поставляется по умолчанию в большинстве систем Linux, если она не установлена в вашей системе, выполните следующие действия:
Откройте терминал Ubuntu либо с помощью Dash, либо с помощью ярлыка Ctrl+Alt+T. Затем введите следующую команду от имени пользователя root, чтобы установить grep через apt-get:
sudo apt-get install grep
Введите y, когда во время процедуры установки вам будет предложено выбрать вариант y/n. После этого утилита grep будет установлена в вашей системе.
Вы можете проверить установку, проверив версию grep с помощью следующей команды:
grep --version
Использование команды grep с примерами
Команду grep лучше всего объяснить, представив несколько сценариев ее использования. Вот несколько примеров:
Поиск файлов
Если вы хотите найти имя файла, содержащее определенное ключевое слово, вы можете отфильтровать список файлов с помощью команды grep следующим образом:
Синтаксис:
$ls -l | grep -i “поисковое слово ”
Примеры:
ls -l | grep -i sample
Эта команда выведет список всех файлов в текущем каталоге с именем файла, содержащим слово «частный».
Поиск строки в файле
Вы можете получить предложение из файла, содержащего определенную строку текста, с помощью команды grep.
Синтаксис:
имя файла grep "string"
Пример :
grep “sample file” sampleFile.txt
Мой файл примера sampleFile.txt содержит предложение со строкой «файл примера», которое вы можете видеть в приведенном выше выводе. Ключевое слово и строка отображаются в результатах поиска в цветной форме.
Поиск строки в более чем одном файле
Если вы хотите найти предложения, содержащие вашу текстовую строку, во всех файлах одного типа, к вашим услугам команда grep.
Синтаксис 1:
$grep "string" имя_файлаКлючевое слово*
Синтаксис 2:
$grep "строка" *.extension
Пример1:
grep "sample file” sample*
Эта команда выберет все предложения, содержащие строку «sample file», из всех файлов с именем файла, содержащим ключевое слово «sample».
Пример 2:
grep "sample file” *.txt
Эта команда выберет все предложения, содержащие строку «файл примера», из всех файлов с расширением .txt.
Поиск строки в файле без учета регистра строки
К счастью, в приведенных выше примерах моя текстовая строка имела тот же регистр, что и в моих примерах текстовых файлов. Если бы я ввел следующую команду, мой результат поиска был бы нулевым, поскольку текст в моем файле не начинается со слова «Образец» в верхнем регистре.
grep "Sample file" *.txt
Давайте скажем grep игнорировать регистр строки поиска и распечатать результаты поиска на основе строки с помощью опции -i.
Синтаксис:
$grep -i "строковое" имя файла
Пример :
grep -i "Sample file" *.txt
Эта команда выберет все предложения, содержащие строку «файл примера», из всех файлов с расширением .txt. При этом не будет учитываться, была ли строка поиска в верхнем или нижнем регистре.
Поиск на основе регулярного выражения
С помощью команды grep вы можете указать регулярное выражение с ключевыми словами начала и конца. Результатом будет предложение, содержащее все выражение между указанным вами начальным и конечным ключевым словом. Эта функция очень эффективна, поскольку вам не нужно писать целое выражение в команде поиска.
Синтаксис:
$grep "startingKeyword.*endingKeyword ” имя файла
Пример :
grep "starting.*.ending" sampleFile.txt
Эта команда напечатает предложение, содержащее выражение (начиная с моего начального ключевого слова и заканчивая моим конечным ключевым словом) из файла, который я указал в команде grep.
Отобразить указанное количество строк после/перед строкой поиска
Вы можете использовать команду grep для печати N строк до/после строки поиска из файла. Результат поиска также включает строку текста, содержащую строку поиска.
Синтаксис для N строк после ключевой строки:
$grep -A
Пример :
grep -A 3 -i "samplestring" sampleFile.txt
Вот как выглядит мой образец текстового файла:
А вот как выглядит вывод команды:
Он отображает 3 строки, включая ту, которая содержит искомую строку, из файла, указанного мной в команде grep.
Синтаксис для N строк перед ключевой строкой:
$grep -B
Вы также можете искать N строк «вокруг» текстовой строки. Это означает количество N строк до и N после текстовой строки.
Синтаксис для N строк вокруг ключевой строки:
$grep -C
С помощью простых примеров, описанных в этой статье, вы сможете освоить команду grep. Затем вы можете использовать его для поиска отфильтрованных результатов, которые могут включать файлы или содержимое файла. Это экономит много времени, которое было потрачено на просмотр всех результатов поиска до того, как вы освоили команду grep.