Команда sed (Stream Editor) в Linux – это мощный инструмент, используемый для обработки текста и модификации файлов. Она позволяет пользователям эффективно искать, заменять, вставлять и удалять текст в файлах, что делает ее важной командой для автоматизации и написания сценариев. В этом руководстве мы рассмотрим на практических примерах, как использовать команду sed для обновления файлов в Linux.
Команда sed широко используется для:
✅ Замены текста – легкой замены слов, фраз или шаблонов в файлах.
✅ Пакетная обработка – изменение нескольких файлов одновременно с помощью скриптов.
✅ Эффективность – быстрая обработка больших файлов без их открытия.
✅ Встроенное редактирование – изменение файлов непосредственно из командной строки.
✅ Автоматизация – используется в скриптах для обработки повторяющихся изменений текста.
Общий синтаксис команды sed выглядит следующим образом:
sed [OPTIONS] 's/old-text/new-text/g' filename
Где:
Чтобы заменить определенное слово в файле, используйте:
sed 's/Linux/Ubuntu/g' file.txt
Это заменит первое вхождение слова “Linux” на “Ubuntu” в каждой строке файла file.txt.
Чтобы заменить все вхождения слова глобально в файле:
sed 's/Linux/Ubuntu/g' file.txt
Флаг g обеспечивает замену всех вхождений в строке.
Для внесения изменений непосредственно в файл без вывода на экран:
sed -i 's/Linux/Ubuntu/g' file.txt
Опция -i позволяет редактировать на месте, то есть исходный файл изменяется без необходимости сохранять отдельную версию.
Чтобы изменить только определенные строки в файле, укажите номер строки:
sed '3s/Linux/Ubuntu/' file.txt
Эта команда заменяет “Linux” на “Ubuntu” только в строке 3.
Чтобы удалить все строки, содержащие определенное слово, используйте:
sed '/unwanted-text/d' file.txt
Это удалит все строки, содержащие “нежелательный текст”.
Чтобы удалить определенную строку, используйте:
sed '5d' file.txt
Это удалит строку 5 из файла file.txt.
Чтобы добавить строку перед определенным номером строки:
sed '3i\This is a new line' file.txt
Это вставляет надпись “Это новая строка” перед строкой 3.
Чтобы вставить строку после определенного номера строки, выполните следующие действия:
sed '3a\This is an appended line' file.txt
Это добавляет “Это добавленная строка” после строки 3.
Чтобы заменить текст сразу в нескольких файлах, выполните следующие действия:
sed -i 's/Linux/Ubuntu/g' *.txt
Эта команда изменяет все файлы .txt в каталоге, заменяя “Linux” на “Ubuntu”.
Чтобы выполнить несколько модификаций одновременно:
sed -i -e 's/Linux/Ubuntu/g' -e 's/Server/Cloud/g' file.txt
Это заменит “Linux” на “Ubuntu”, а “Server” на “Cloud” в файле file.txt.
Чтобы заменить числа в файле:
sed 's/[0-9]/#/g' file.txt
Это заменит все цифры на #.
Чтобы извлечь и отобразить строки с 5 по 10:
sed -n '5,10p' file.txt
Параметр -n предотвращает печать всего файла, показывая только строки 5-10.
🔹 Всегда создавайте резервные копии файлов перед использованием -i – предотвратите случайную потерю данных.
🔹 Используйте регулярные выражения – Мощный поиск шаблонов для сложных модификаций.
🔹 Тестируйте команды перед применением изменений – Запускайте sed без -i для предварительного просмотра вывода.
🔹 Используйте скрипты для автоматизации – объедините sed с shell-сценариями для пакетной обработки.
Команда sed – это универсальный и эффективный инструмент для обновления файлов в Linux. Если вам нужно заменить текст, удалить строки или вставить содержимое, sed может автоматизировать и упростить эти задачи. Освоив sed, вы сможете улучшить свой рабочий процесс и повысить производительность в администрировании Linux и написании сценариев.