Введение
sEd (Stream Editor) — это универсальный инструмент для редактирования текста в терминале Linux. С его помощью можно быстро изменять файлы, заменять подстроки, фильтровать строки и извлекать нужные поля — всё это делается одной командой. В этом гайде вы освоите базовые команды и сможете выполнять типичные операции за несколько минут.
Требования
Предварительные условия
- Любая современная дистрибутива Linux (Ubuntu, Debian, Fedora, Arch и т.д.)
- Права на чтение/запись в целевой файл
- Установленный
sed(обычно уже присутствует в системе)
Шаг 1: Проверка установки sed
Убедитесь, что sed работает в вашей системе.
sed --version
Если команда не найдена, установите утилиту с помощью подходящего пакетного менеджера:
# Для Debian/Ubuntu
apt install sed
# Для RHEL/CentOS
yum install sed
# Для Alpine
apk add sed
Шаг 2: Замена текста в файле
Самая распространённая операция — замена одного слова на другое во всём файле.
sed -i 's/old/new/g' file.txt
-i— изменяет файл напрямую (без вывода).s/old/new/g— шаблон замены, гдеold— исходная подстрока,new— новая,gозначает глобальную замену во всей строке.
Шаг 3: Вывод совпадающих строк
Если вам нужна только часть файла, используйте sed -n для вывода совпадающих строк.
sed -n '/error/p' system.log
-nотключает автоматический вывод всех строк./error/p— командаp, которая выводит строку, если она содержит шаблонerror.
Шаг 4: Извлечение и изменение данных
Команды sed позволяют также преобразовывать данные перед выводом. Пример: замена разделителя и фильтрация.
sed -n 's/:/ /; /error/p' logfile
s/:/ /заменяет двоеточие на пробел./error/pвыводит только строки, содержащиеerror.
Проверка результата
- Замена: Проверьте файл после команды
-i, напримерgrep -n old file.txtне должно найти совпадающих строк. - Вывод строк: Убедитесь, что только нужные строки отображаются, лишние удалены.
- Преобразование: Проверьте, что разделители изменились, а отфильтрованные строки соответствуют шаблону.
Возможные проблемы
sed: command not found– утилита отсутствует; установите её через пакетный менеджер дистрибутива.Permission denied– у вас нет прав на запись; запустите команду от имени root (sudo) или измените права доступа к файлу.- Неправильное регулярное выражение – проверьте экранирование специальных символов (
\.,\*). Используйте-E, чтобы включить расширенные регулярные выражения, если нужно. - Не удалось сохранить изменения – файл может быть защищён системой (например,
/etc/passwd). Убедитесь, что вы изменяете разрешённый файл или используете резервное копирование.
Следуйте этим шагам, и вы сможете эффективно использовать sed для повседневных задач редактирования текста в Linux. Удачного кодирования!