Утилита sed#
Описание#
Утилита sed - это потоковый редактор, работающий по принципу замены. Используется для преобразований текста во входном потоке (файле или входных данных в конвейере) - можно использовать для поиска, вставки, замены и удаления фрагментов в файле, не открывая его.
sed копирует указанный файл (по умолчанию, стандартный ввод) в стандартный вывод, редактируя его в соответствии с командами сценария в буфере шаблона. При этом исходный файл не изменяется.
Внимание
Чтобы внести изменения в исходный файл без отправки в стандартный вывод, используйте опцию -i.
Синтаксис утилиты:
sed <options> <script/command> <file>
Где:
<options>- опции;<script/command>- скрипт/команда;<file>- файл.
Опции#
Часто используемые опции утилиты представлены в таблице ниже.
Опция |
Описание |
|---|---|
|
Добавление скрипта в выполняемые команды |
|
Редактирование исходного файла (создание резервной копии, если указано расширение - суффикс) |
|
Отключение автоматического вывода; по умолчанию |
|
Использование расширенных регулярных выражений в скрипте |
|
Обработка файлов как отдельных единиц, а не как единого непрерывного потока данных |
Команды#
Часто используемые команды редактирования утилиты представлены в таблице ниже.
Команда |
Описание |
|---|---|
|
Вывод номера текущей строки |
|
Комментарий, не выполняется |
|
Добавление текста, в котором каждое вхождение новой строки начинается со знака |
|
Замена содержимого буфера шаблона данными из дополнительного буфера |
|
Немедленный выход из сценария |
|
Добавление текста, прочитанного из указанного файла |
|
Вывод текущей области шаблона |
|
Сопоставление и замена |
|
Очистка буфера шаблона и запуск следующей итерации цикла |
Примеры использования#
Для отображения из файла
/etc/groupстроки с пятой по десятую введите команду:sed -n '5,10p' /etc/groupДля замены вхождения слова
rootнаtestс записью в исходный файл/etc/groupи отображения в стандартном выводе введите команду:sed 's/root/test/g' /etc/groupДля замены вхождения слова
rootнаtestв исходном файле/etc/groupбез отображения в стандартном выводе:sed -i 's/root/test/g' /etc/groupДля замены в каждой строке файла
testfile.txtсловаtestна словоtestwordво втором вхождении введите команду:sed 's/test/testword/2' testfile.txtВхождения, которые нужно заменить, обозначаются с помощью флагов
/1,/2и т.д.
Дополнительная информация#
Дополнительную информацию можно получить, выполнив команду:
man sed
Или:
sed --help