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

📌Какая разница между командами GREP, AWK и SED
Команды grep, awk и sed – это мощные утилиты в Unix/Linux, которые используются для обработки и манипуляции текстом. Они имеют разные цели, хотя в некоторых случаях их можно использовать взаимозаменяемо.
- grep – Поиск строк
-
Используется для поиска строк, соответствующих заданному шаблону (обычно регулярному выражению).
-
Выводит найденные строки или их части.
-
Основная задача – фильтрация текста.
Примеры:
grep "error" log.txt # Найти строки, содержащие "error"
grep -i "warning" log.txt # Игнорировать регистр
grep -E "fail|error" log.txt # Использовать расширенные регулярные выражения (ERE)
grep -v "INFO" log.txt # Исключить строки, содержащие "INFO"
- 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 # Редактировать файл на месте (без создания копии)
- 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