December 22

10 команд grep, которые заставят вас почувствовать себя настоящим волшебником Linux.

Это перевод оригинальной статьи 10 grep Commands That'll Make You Feel Like a Linux Wizard.

Подписывайтесь на телеграм-канал usr_bin, где я публикую много полезного по Linux, в том числе ссылки на статьи в этом блоге.

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

Изображение, сгенерированное искусственным интеллектом

GREP расшифровывается как Global Regular Expression Search and Print (Глобальный поиск регулярных выражений и вывод ). Представьте себе это как Ctrl+F на стероидах. Позвольте показать вам 10 команд, которые превратят вас из новичка в Linux в человека, который выглядит так, будто знает, что делает.

1. Базовый поиск

grep "error" logfile.txt

Это ваш основной инструмент. Команда ищет слово «error» в файле logfile.txt и выводит каждую строку, содержащую это слово. Просто, но эффективно, когда нужно быстро что-то найти.

2. Поиск без учета регистра (потому что кто помнит регистр букв?)

grep -i "error" logfile.txt

Флаг -i игнорирует регистр. Теперь будут найдены «Error», «ERROR», «eRRoR» — вы поняли идею. Вероятно, это флаг, который я использую чаще всего, потому что, будем честны, единообразное использование регистра — это миф.

3. Рекурсивный поиск по каталогам

grep -r "TODO" /home/user/projects/"TODO" /home/user/projects/

Хотите найти все те комментарии TODO, которые вы оставили по всему проекту? Флаг -r выполняет поиск по всем файлам в каталоге и его подкаталогах. Это как рентгеновское зрение для вашей файловой системы.

4. Отображение номеров строк (если потребуется внести необходимые исправления)

grep -n "function" script.py

Флаг -n отображает номера строк рядом с найденными совпадениями. Очень удобно, когда нужно перейти к определенному месту в файле. Больше не нужно бесцельно прокручивать 500 строк кода.

5. Инвертирование поиска (найти то, чего НЕТ)

grep -v "debug" logfile.txt

Флаг -v инвертирует совпадение, отображая все строки, кроме тех, что содержат "debug". Идеально подходит для фильтрации лишней информации при анализе логов.

6. Подсчёт количества совпадений

grep -c "warning" logfile.txt

Вместо отображения всех совпадений, -c показывает только количество совпавших строк. Отлично подходит для быстрой статистики, например: "Сколько предупреждений сгенерировала эта сборка?"

7. Совпадение только целых слов

grep -w "cat" animals.txt

Без флага -w поиск слова «cat» также будет давать результаты по словам «caterpillar», «concatenate» и «scatter». Флаг -w гарантирует получение только точных совпадений слов. Это разница между точностью и хаосом.

8. Контекст имеет значение: показать окружающие строки

grep -C 3 "exception" logfile.txt

Флаг -C (контекст) показывает строки до и после совпадения. Вы также можете использовать -A (после) или -B (до). Это очень полезно при отладке, ошибка — это только половина истории; вам нужно увидеть, что к ней привело.

9. Поиск по нескольким файлам с шаблонами

grep "import" *.py

Используйте подстановочные знаки для поиска по нескольким файлам одновременно. Эта команда ищет "import" во всех файлах Python в текущем каталоге. Ваша IDE тоже это умеет, но знание способа через командную строку делает вас опасным.

10. Расширенные регулярные выражения (повышение уровня)

grep -E "error|warning|critical" logfile.txt

Флаг -E включает расширенные регулярные выражения, позволяя использовать специальные символы без их экранирования. Здесь мы ищем любую строку, содержащую «error», «warning» или «critical». Вы можете создавать невероятно сложные шаблоны:

grep -E "[0-9]{3}-[0-9]{2}-[0-9]{4}" documents.txt
Эта функция ищет шаблоны, соответствующие формату номера социального страхования. Регулярные выражения — это отдельная тема, но их стоит изучить.

Бонус: Как профессионально комбинировать флаги

grep -rni "password" /var/log/

А вот тут начинается самое интересное. Комбинируйте параметры, чтобы создавать мощные поисковые запросы:

  • -r для рекурсивного поиска
  • -n для номеров строк
  • -i для нечувствительного к регистру

Эта команда рекурсивно ищет во всех файлах логов любое упоминание слова «password», игнорируя регистр, и показывает вам, где именно оно было найдено.

Пример из реальной жизни: Обнаружение ошибки

Представьте, что вы пытаетесь выяснить причину сбоя вашего веб-приложения в 2 часа ночи. Вот как grep может помочь:

grep -rni "exception" /var/log/apache2/ | grep "2025-11-07"

Этот код рекурсивно ищет исключения в логах Apache, отображает номера строк, игнорируя регистр, а затем передает результаты через еще один grep, чтобы отфильтровать только сегодняшнюю дату. Таким образом, вы сузили круг из тысяч записей в логах до того, что вам нужно.

Шпаргалка по сопоставлению шаблонов

Для тех, кто готов копнуть глубже, вот основные символы сопоставления шаблонов:

  • . Соответствует любому одиночному символу
  • * Соответствует нулю или более повторений предыдущего символа.
  • ^ Начало строки
  • $ Конец строки
  • [abc] Соответствует любому символу в скобках.
  • [^abc] Соответствует любому символу, НЕ входящему в скобки.
  • | Оператор ИЛИ (с флагом -E)

Почему это важно

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

Самое приятное? от Raspberry Pi до продакшен-серверов. Изучите их один раз, используйте везде.

На этом все! Спасибо за внимание! Если статья была интересна, подпишитесь на телеграм-канал usr_bin, где будет еще больше полезной информации.