Как использовать команду grep в Debian

Grep расшифровывается как global regular expression print (глобальная печать регулярных выражений). Это полезная команда, широко используемая системными инженерами Linux при поиске строки или шаблонов в регулярных файлах и в системе.

В этой статье я собираюсь продемонстрировать использование команды grep на большом количестве примеров. Я протестировал все команды и примеры на машине Debian 10.

Установка команды grep в Debian

У вас должна быть привилегии root.

По умолчанию grep установлен на большинстве систем, включая Debian 10. Если он не установлен, откройте терминал и выполните следующую команду с правами root.

Когда появится запрос на подтверждение, нажмите y, а затем enter с клавиатуры. Дождитесь окончания установки.

Поскольку grep уже был установлен на моей машине, посмотрите на скриншот выше. Давайте проверим ее версию, выполнив следующую команду в терминале.

Она также должна вернуть версию вместе с другими данными.

Проверка версии команды grep

Использование команды grep

Поиск определенного файла или каталога в системе

Когда вы хотите найти определенный файл в системе, синтаксис команды должен быть следующим.

Я хочу найти сетевой каталог в /etc/. Полная команда должна выглядеть следующим образом.

Опция 'i' игнорирует регистр. Поэтому она должна воспринимать network, Network или NETWORK как одно и то же.

Ниже приведен пример вывода.

Поиск имен файлов с помощью grep

Предположим, я хочу найти файл "interfaces.d", расположенный по адресу /etc/network/, необходимо выполнить следующую команду.

 

Поиск имен папок с помощью grep

Необходимо заключить слово, которое вы хотите найти, в двойные кавычки, если оно содержит пробелы. Предположим, мы ищем "сетевой демон", приведенная выше команда должна выглядеть следующим образом.

Поиск полного слова с помощью grep

Вы могли заметить, что grep возвращает всевозможные результаты, включающие слово "network", например, networks, networked, networking или abcnetworking и т.д. Если вы хотите ограничить поиск конкретным словом, вам нужно использовать опцию -w следующим образом.

Ниже приведен пример вывода.

Поиск полного слова с помощью grep

Поиск определенного текста в файле

У нас есть случай, когда у вас есть большой файл и вы хотите найти определенный текст. Синтаксис команды должен быть следующим.

Предположим, я хочу найти слово "fox" в файле test.txt, который находится в моем текущем каталоге. Выполните следующую команду в терминале.

Ниже приведен пример вывода, который возвращает только те строки файла, которые содержат слово "fox".

Поиск текста в файлах с помощью grep

Выполнение рекурсивного поиска (Поиск в нескольких файлах)

Если вы хотите найти текст в большом количестве файлов и подкаталогов внутри каталога, вы можете выполнить рекурсивный поиск с помощью опции -r.

Ниже приведен пример вывода, который показывает, что слово fox присутствует в обоих файлах test.txt  в указанной строке.

Рекурсивный поиск

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

Предположим, я хочу выполнить рекурсивный поиск текста "interfaces" в каталоге /etc/ и его подкаталогах. Команда должна быть выполнена следующим образом.

Ниже приведен пример вывода.

Пример рекурсивного поиска

Поиск двух разных слов с помощью одной команды grep

Вы можете искать два разных слова с помощью одной команды egrep (которая является разновидностью grep) следующим образом. Предположим, я хочу найти полные слова fox и lazy в нескольких файлах, используя опцию -r. Для этого нужно выполнить следующую команду в терминале.

Ниже приведен пример вывода.

Поиск двух разных слов с помощью одной команды grep

Нумерация строк, соответствующих тексту

Другой полезной опцией является -n, которая нумерует строки, соответствующие тексту. Ниже приведен пример, иллюстрирующий использование опции -n.

Ниже приведен пример вывода, в котором пронумерованы строки, соответствующие слову "fox".

Нумерация строк, соответствующих тексту

Инвертирование поиска

Это противоположность тому, что мы сделали выше. Если вы хотите вернуть текст, не содержащий указанного вами слова, вы можете использовать опцию -v.

Ниже приведен пример, демонстрирующий использование опции -v.

Ниже приведен пример вывода.

Инвертированный поиск grep

Все вышеперечисленные опции (-n и т.д.) также могут быть применены с опцией -v.

Подсчет совпадений

Если вы просто хотите подсчитать количество совпадений с определенным текстом, вы можете использовать опцию -c.

Давайте посчитаем слово "fox" в файле test.txt, расположенном в текущем каталоге. Выполните следующую команду в терминале.

Ниже приведен пример вывода после выполнения вышеуказанной команды, который показывает, что слово fox 11 раз встречается в файле test.txt.

Подсчет совпадений с помощью grep

Отображение имен файлов, соответствующих определенному тексту

Если вы хотите найти файлы, которые содержат определенное слово, вы можете использовать опцию -l вместе с -r следующим образом. Предположим, что все файлы находятся в вашем текущем каталоге, а конкретное слово, которое вы ищете или сопоставляете - 'fox'.

Ниже приведен пример вывода, который показывает, что слово fox присутствует внутри test.txt.

Отображение имен файлов, соответствующих определенному тексту

Отображение только совпадающего текста

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

Ниже приведен пример вывода.

Отображение только совпавшего текста

Отображение строк, которые начинаются с определенного слова (слов)

Если вы хотите получить все строки, которые начинаются с определенного слова (слов), вы можете использовать оператор ^ следующим образом.

Предположим, вы хотите получить все строки, которые начинаются с "Cow", а файл test.txt находится в текущем каталоге.

Выполните следующую команду в терминале.

Ниже приведен пример вывода.

Отображение строк, которые начинаются с определенного слова (слов)

Отображение строк, которые заканчиваются определенным словом (словами)

Если вы хотите вернуть все те строки из файла, которые заканчиваются определенным словом (словами), вы можете использовать оператор $ следующим образом.

Для примера, отобразим все строки, которые заканчиваются на woods.

Выполните следующую команду в терминале.

Ниже приведен пример вывода.

Пример строк заканчиваются определенным словомЗаключение

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

Понравилась статья? Поделиться с друзьями:
Добавить комментарий