📌Какая разница между командами GREP, AWK и SED

25 февраля 2025 г.Системный администратор
📌Какая разница между командами GREP, AWK и SED | 🔁 Новости из телеграм - Ghostbase News

📌Какая разница между командами GREP, AWK и SED

Команды grep, awk и sed – это мощные утилиты в Unix/Linux, которые используются для обработки и манипуляции текстом. Они имеют разные цели, хотя в некоторых случаях их можно использовать взаимозаменяемо.

  1. grep – Поиск строк
  • Используется для поиска строк, соответствующих заданному шаблону (обычно регулярному выражению).

  • Выводит найденные строки или их части.

  • Основная задача – фильтрация текста.

Примеры:

grep "error" log.txt # Найти строки, содержащие "error"

grep -i "warning" log.txt # Игнорировать регистр

grep -E "fail|error" log.txt # Использовать расширенные регулярные выражения (ERE)

grep -v "INFO" log.txt # Исключить строки, содержащие "INFO"

  1. sed – Потоковый редактор
  • Позволяет заменять, удалять, изменять текст на основе шаблонов.

  • Работает построчно, но может также обрабатывать многострочные паттерны.

  • Может использоваться для быстрого редактирования файлов.

Примеры:

sed 's/apple/orange/' file.txt # Заменить первое вхождение "apple" на "orange" в каждой строке

sed 's/error/ERROR/g' file.txt # Заменить все вхождения "error" на "ERROR"

sed '/DEBUG/d' file.txt # Удалить строки, содержащие "DEBUG"

sed -i 's/foo/bar/g' file.txt # Редактировать файл на месте (без создания копии)

  1. awk – Анализ и обработка текста
  • Используется для извлечения данных, обработки полей, манипуляции с текстом.

  • Работает как мини-программа: может выполнять арифметические операции, фильтрацию и форматирование.

  • Использует колонки (разделенные пробелами или другими разделителями) для обработки данных.

Примеры:

awk '{print $1, $3}' file.txt # Вывести 1-й и 3-й столбцы

awk -F ":" '{print $1}' /etc/passwd # Вывести имена пользователей (разделитель - двоеточие)

awk '$3 > 50 {print $1, $3}' file.txt # Вывести строки, где 3-й столбец > 50

awk '{sum+=$3} END {print "Sum:", sum}' file.txt # Подсчитать сумму 3-го столбца

Основные отличия между grep, sed и awk

grep: основное назначение - поиск строк по шаблону

grep: что делает лучше всего? - фильтрация строк по регулярным выражениям

sed: основное назначение - поиск и замена текста

sed: что делает лучше всего? - удаление, вставка строк в файле

awk: основное назначение - работа с колонками и данными

awk: что делает лучше всего? - анализ данных, извлечение полей, обработка значений

Когда использовать?

  • Нужно просто найти строку в файле? → grep

  • Нужно заменить или удалить текст? → sed

  • Нужно обработать данные, работать с колонками? → awk

Каждая из этих утилит может быть использована совместно для более сложных задач, например:

grep "error" log.txt | awk '{print $2, $5}' | sed 's/:/-/'

(Ищем ошибки, берем 2-й и 5-й столбцы, заменяем : на -)

👉 @i_odmin