sed - пакетный редактор
sed [-n] [-e сценарий] [-f с_файл] ... [файл ...]
Sed копирует указанные файлы (по умолчанию - стандартный ввод), на стандартный вывод, редактируя их в соответствии с командами сценария. Опция -f приводит к тому, что сценарий берется из с_файла, этих опций может быть несколько. Если присутствует только опция -e, а опции -f отсутствуют, флаг -e можно опустить. Опция -n подавляет вывод, выполняемый по умолчанию. Сценарий состоит из редактирующих команд (каждая на отдельной строке), имеющих следующий формат:
[адрес [, адрес]] функция [аргумент ...]
В нормальном режиме sed циклически выполняет следующие действия:
Некоторые команды используют хранилище, чтобы запомнить весь буфер или его часть для последующего использования.
Адрес - это либо десятичное число, означающее номер входной строки в совокупности входных файлов, либо $, означающий последнюю входную строку, либо контекстный адрес, то есть /регулярное_выражение/ в стиле редактора со следующими модификациями:
текст Добавить. Вывести текст перед чтением следующей входной строки. |
Перейти к команде :, содержащей метку. Если метка пуста, перейти на конец сценария. |
текст Заменить. Удалить содержимое буфера. При 0 или 1 адресе или в конце 2-адресного диапазона вывести текст. Начать новый цикл. |
Удалить содержимое буфера. Начать новый цикл. |
Удалить начало буфера, до первого перевода стро- ки. Начать новый цикл. |
Заменить содержимое буфера содержимым хранилища. |
Добавить к содержимому буфера содержимое хранили- ща. |
Заменить содержимое хранилища содержимым буфера. |
Добавить к содержимому хранилища содержимое буфе- ра. |
текст Вставить. Вывести текст. |
Вывести буфер, заменяя непечатные символы на пары символов ASCII и разбивая длинные строки. |
Скопировать буфер на стандартный вывод. Заменить содержимое буфера на следующую входную строку. |
Добавить к буферу следующую входную строку с сох- ранением символа перевода строки. (Текущий номер строки изменяется). |
Скопировать буфер на стандартный вывод. |
Скопировать начальный сегмент буфера (до первого перевода строки) на стандартный вывод. |
Выйти. Перейти на конец сценария. Нового цикла не начинать. |
Прочитать содержимое ч_файла. Поместить его на стандартный вывод перед чтением следующей входной строки. |
Заменить все вхождения регулярного_выражения, а не только первое. |
Если замена произошла, вывести содержимое буфера. |
Если замена произошла, добавить содержимое буфера к з_файлу. |
Проверить. Перейти к команде :, содержащей метку, если со времени последнего чтения входной строки или последнего выполнения команды t в буфере выполнялись подстановки. Если метка пуста, перейти на конец сценария. |
Записать. Добавить содержимое буфера к з_файлу. |
Обменять содержимое буфера и хранилища. |
Отрицание. Применить функцию (или группу, если функция начинается с {) только к строкам, которые не соответстуют адресам. |
Не делает ничего. Содержит лишь метку, на которую может быть осуществлен переход командами t или b. |
Вывести в качестве отдельной строки номер текущей строки. |
Выполнить следующие команды, вплоть до соответст- вующего символа }. |
Пустая команда. |