Введение
Команда grep является незаменимым инструментом при анализе больших текстовых файлов или системных логов в среде Linux. В этой статье мы рассмотрим ключевые практические методы быстрого поиска нужных строк в терминале Ubuntu с помощью grep и точной интерпретации результатов вывода.
Базовый поиск строк и игнорирование регистра символов (-i)
Чтобы создать изолированное рабочее пространство для практики с командой grep и перейти в него, выполните команду mkdir -p ~/grep_demo && cd ~/grep_demo.

Чтобы создать текстовый файл с примерами строк для тестирования поиска, выполните команду echo -e 'Ubuntu Linux Server\nubuntu desktop\nDebian GNU/Linux' > sample.txt.

Команда grep выполняет поиск определенного шаблона или строки в файлах или тексте и выводит совпадающие строки.
По умолчанию регистр символов строго учитывается, поэтому будут найдены только строки с точным совпадением Ubuntu.
⚙️ [Основные опции]
-i : игнорирует регистр символов при поиске совпадений.-v : инвертирует поиск, выводя только те строки, которые не содержат указанный шаблон.-n : выводит номера строк вместе с найденным содержимым.-c : выводит только общее количество совпавших строк.-r : выполняет рекурсивный поиск по всем файлам во вложенных каталогах.-l : выводит только имена файлов, содержащих совпадения.-E : выполняет поиск с использованием расширенных регулярных выражений (ERE).

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

Отображение номеров строк (-n) и инвертированный поиск (-v)
Для создания тестовых данных логов, которые будут использоваться в практике анализа, выполните команду echo -e 'INFO: Service started\nERROR: Connection timeout\nINFO: Request handled\nERROR: Disk full' > app.log.

Опция -n позволяет отображать номера строк, совпадающих с шаблоном поиска.
Вывод номеров строк вместе со строками, содержащими ERROR, позволяет быстро определить место возникновения проблемы.

Опция -v инвертирует поиск и выводит только те строки, которые не соответствуют заданному шаблону.
Это позволяет исключить обычные строки с отметкой INFO и отобрать только записи, связанные с ошибками.

Рекурсивный поиск по подкаталогам (-r) и вывод только имен файлов (-l)
Для практики рекурсивного поиска создайте структуру вложенных каталогов для архива с помощью команды mkdir -p ~/grep_demo/logs/archive.

Для проверки поиска создайте лог-файл ошибок базы данных с помощью команды echo 'database error' > ~/grep_demo/logs/db.log.

Для проверки стандартных записей создайте лог-файл кэша с помощью команды echo 'cache hit' > ~/grep_demo/logs/cache.log.

Для тестирования навигации по вложенным каталогам создайте архивный файл старых ошибок с помощью команды echo 'fatal error occurred' > ~/grep_demo/logs/archive/old.log.

Совместное использование опций -r и -n позволяет выполнять рекурсивный поиск по подкаталогам с одновременным отображением номеров найденных строк.
В файлах, расположенных в каталоге logs и подкаталоге archive, будут выведены пути к файлам, номера строк и содержимое, содержащее строку error.

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

Просмотр окружающего контекста (-A, -B, -C) и цветовое выделение
Чтобы попрактиковаться в отслеживании пошагового выполнения процесса и контекста ошибок, создайте тестовый лог-файл с помощью команды echo -e 'Step 1: Init\nStep 2: Load Config\nStep 3: Critical Failure\nStep 4: Cleanup\nStep 5: Exit' > process.log.

Опции -B и -A позволяют вывести указанное количество строк соответственно до (Before) и после (After) найденной строки.
Опция --color=always подсвечивает совпавшее словосочетание Critical Failure цветом, а вывод одной строки до и двух строк после позволяет понять ход выполнения операций до и после возникновения ошибки.

Опция -C позволяет одновременно вывести одинаковое количество строк контекста (Context) как до, так и после совпадения.
Одновременное отображение одной строки непосредственно перед строкой с Critical Failure и одной строки сразу после нее делает анализ ключевого контекста еще более наглядным.

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