Linux

Обработка текста в Linux с помощью AWK и SED — пошаговое руководство

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

Обновлено 10 июля 2026 г.
10-15 мин
Низкая
FixPedia Team
Применимо к:Ubuntu 22.04Debian 12CentOS 8

Введение / Зачем это нужно

Обработка текста — повседневная задача для системных администраторов и разработчиков. Linux предоставляет два мощных инструмента для работы с текстом: AWK и SED. AWK excels в анализе полей и вычислениях, а SED shines в быстром редактировании строк. В этом гайде вы узнаете, как использовать обе утилиты для массового редактирования, фильтрации и преобразования файлов. После выполнения инструкции вы сможете автоматизировать повседневные операции с текстом с помощью простых команд в терминале.

Требования / Подготовка

  • Дистрибутив Linux (Ubuntu, Debian, CentOS и другие).
  • Доступ к терминалу с правами чтения/записи в целевых каталогах.
  • Утилиты awk и sed (обычно уже установлены).
  • Пример файлов для практики: log.txt, data.txt, input.txt.

Если какие-то утилиты отсутствуют, установите их:

# Для Debian/Ubuntu
sudo apt-get install gawk sed

# Для CentOS/RHEL
sudo yum install gawk sed

Пошаговая инструкция

Шаг 1: Установите необходимые инструменты

Проверьте, что инструменты уже присутствуют:

awk --version
sed --version

Если вывод показывает версию, вы готовы продолжать. В противном случае установите пакеты, как описано выше.

Шаг 2: Замена текста с помощью sed

SED — идеальный выбор для быстрой замены текста.

# Редактирует файл напрямую
sed -i 's/error/ok/g' log.txt

# Показать результат без изменения исходного файла
sed 's/error/ok/g' log.txt

💡 Совет: Флаг -i редактирует файл на месте. На macOS синтаксис может отличаться (sed -i ''). Проверьтеman-page, если команда работает некорректно.

Шаг 3: Фильтрация строк с помощью awk

AWK позволяет фильтровать строки на основе шаблонов или значений полей.

# Вывести только строки, содержащие слово warning
awk '/warning/ {print}' log.txt

# Вывести строку вместе с номером строки
awk '/warning/ {print NR ": " $0}' log.txt

Шаг 4: Удаление пустых строк с помощью sed

Удалите все пустые строки и сохраните результат:

sed '/^$/d' data.txt > cleaned.txt

:

Шаг 5: Комбинированный пример: фильтрация и замена

Выполните сразу несколько операций: фильтрация, замена и запись в новый файл.

awk '{if (length($0) > 0) {sub(/foo/, "bar"); print}}}' input.txt > output.txt

Команда проверяет длину строки, выполняет замену foo на bar и выводит непустые строки.

Шаг 6: Сохранение результата и проверка

Убедитесь, что результат соответствует ожиданиям:

# Первые 10 строк результата
cat output.txt | head -n 10

# Количество строк в файле
wc -l output.txt

⚠️ Важно: Если файл output.txt уже существовал, команда awk перезапишет его. Используйте резервные копии, если нужно сохранить исходные данные.

Проверка результата

После выполнения всех шагов проверьте, что операции выполнены корректно:

  • В log.txt должны появиться заменённые значения ok.
  • Вывод awk '/warning/ …' должен содержать только строки со словом warning.
  • cleaned.txt не должен содержать пустых строк.
  • output.txt должен содержать строки без foo и с заменёнными bar.

Возможные проблемы

СимптомПричинаРешение
sed: command not foundУтилита SED отсутствуетУстановите пакет sed (apt-get install sed или yum install sed)
awk: command not foundAWK отсутствуетУстановите gawk (apt-get install gawk)
Замена не применяетсяОшибка в регулярном выраженииПроверьте шаблон: s/old/new/ ; используйте кавычки правильно
Пустые строки не удаляютсяНеверный шаблонИспользуйте sed '/^$/d' (точка в начале и конце)
awk: cmd. number out of rangeПревышение диапазона полейИспользуйте $0 для всей строки или увеличьте FS если нужно больше полей
Нет доступа к файлуНедостаточно правЗапустите команду с sudo или измените права (chmod)
sed -i не работает на macOSДругой синтаксисИспользуйте sed -i '' 's/old/new/g'

Теперь у вас есть полный набор команд для повседневной обработки текста в Linux. Экспериментируйте, комбинируйте и создавайте собственные скрипты для автоматизации рутинных задач.

Часто задаваемые вопросы

В чем основное различие между AWK и SED?
Как выполнить глобальную замену текста в файле с помощью sed?
Когда лучше использовать AWK вместо SED?

Полезное

Установите необходимые инструменты
Замена текста с помощью sed
Фильтрация строк с помощью awk
Удаление пустых строк с помощью sed
Комбинированный пример: фильтрация и замена
Сохранение результата и проверка