Как работает grep, awk, sed? Для чего они используются?

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

Команда grep

grep ищет строки, которые совпадают с указанным текстом или регулярным выражением.

grep "error" app.log
grep -i "error" app.log
grep -r "DATABASE_URL" .
grep -E "error|warning" app.log
  • -i — поиск без учёта регистра;

  • -r — рекурсивный поиск по каталогам;

  • -E — расширенные регулярные выражения.

Команда awk

awk обрабатывает текст построчно и разбивает строки на поля. По умолчанию поля разделяются пробелами, а доступ к ним получают через $1, $2 и так далее.

awk '{print $1}' access.log
awk -F: '{print $1}' /etc/passwd
ps aux | awk '{print $2, $11}'

В примере с /etc/passwd параметр -F: задаёт двоеточие как разделитель полей.

Команда sed

sed — потоковый редактор текста. Его часто используют для замены, удаления и выборки строк без ручного открытия файла в редакторе.

sed 's/http:/https:/' config.txt
sed 's/http:/https:/g' config.txt
sed -n '1,10p' app.log
sed -i 's/DEBUG=true/DEBUG=false/' .env

Флаг -i изменяет файл на месте, поэтому перед его использованием важно понимать последствия и при необходимости сделать резервную копию.

Пример с pipe

journalctl -u nginx | grep -i error | awk '{print $1, $2, $3, $NF}'

Здесь логи Nginx передаются в grep для поиска ошибок, а затем awk выбирает нужные поля из результата.

Как ответить на собеседовании

grep ищет текст и регулярные выражения в строках, awk извлекает и обрабатывает поля структурированного текста, а sed выполняет потоковые замены и другие преобразования. Обычно применяю их для логов, конфигураций и обработки вывода команд через pipe.

Оцени свой прогресс

Честно оцени своё понимание этого вопроса, чтобы мы могли построить твой учебный трек максимально эффективно.
Читать в блоге