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/
А вот тут начинается самое интересное. Комбинируйте параметры, чтобы создавать мощные поисковые запросы:
Эта команда рекурсивно ищет во всех файлах логов любое упоминание слова «password», игнорируя регистр, и показывает вам, где именно оно было найдено.
Пример из реальной жизни: Обнаружение ошибки
Представьте, что вы пытаетесь выяснить причину сбоя вашего веб-приложения в 2 часа ночи. Вот как grep может помочь:
grep -rni "exception" /var/log/apache2/ | grep "2025-11-07"
Этот код рекурсивно ищет исключения в логах Apache, отображает номера строк, игнорируя регистр, а затем передает результаты через еще один grep, чтобы отфильтровать только сегодняшнюю дату. Таким образом, вы сузили круг из тысяч записей в логах до того, что вам нужно.
Шпаргалка по сопоставлению шаблонов
Для тех, кто готов копнуть глубже, вот основные символы сопоставления шаблонов:
.Соответствует любому одиночному символу*Соответствует нулю или более повторений предыдущего символа.^Начало строки$Конец строки[abc]Соответствует любому символу в скобках.[^abc]Соответствует любому символу, НЕ входящему в скобки.|Оператор ИЛИ (с флагом-E)
Почему это важно
Изучение grep — это не заучивание команд, а изменение подхода к поиску. Вместо того чтобы открывать файлы по одному, вы можете запросить информацию по всей системе за считанные секунды. Вы будете быстрее отлаживать код, быстрее находить проблемы с конфигурацией и в целом будете выглядеть так, будто знаете, что делаете.
Самое приятное? от Raspberry Pi до продакшен-серверов. Изучите их один раз, используйте везде.
На этом все! Спасибо за внимание! Если статья была интересна, подпишитесь на телеграм-канал usr_bin, где будет еще больше полезной информации.