НАЗВАНИЕ
sed - пакетный редактор
СИНТАКСИС
sed [-n] [-e сценарий] [-f с_файл] ... [файл ...]
ОПИСАНИЕ
Sed копирует указанные файлы (по умолчанию - стандартный ввод), на стандартный вывод, редактируя их в соответствии с командами сценария. Опция -f приводит к тому, что сценарий берется из с_файла, этих опций может
быть несколько. Если присутствует только опция -e, а
опции -f отсутствуют, флаг -e можно опустить. Опция -n
подавляет вывод, выполняемый по умолчанию. Сценарий
состоит из редактирующих команд (каждая на отдельной
строке), имеющих следующий формат:
[адрес [, адрес]] функция [аргумент ...]
В нормальном режиме sed циклически выполняет следующие действия:
Некоторые команды используют хранилище, чтобы запомнить весь буфер или его часть для последующего использования.
Адрес - это либо десятичное число, означающее номер входной строки в совокупности входных файлов, либо $, означающий последнюю входную строку, либо контекстный адрес, то есть /регулярное_выражение/ в стиле редактора ed(1) со следующими модификациями:
С помощью функции отрицания ! (см. ниже) команды редак- тирования могут быть применены к буферу, не попадающему в указанный диапазон адресов.
В следующем списке функций в скобках указывается макси- мальное число допустимых адресов для каждой функции.
Аргумент текст состоит из одной или более строк. Все строки, кроме последней, заканчиваются на \, чтобы экранировать символ перевода строки. Символы \ в тексте трактуются так же, как в заменяющей цепочке символов команды s, и могут использоваться для экранирования начальных пробелов и табуляций, которые обычно из командной строки удаляются. Аргументы ч_файл и з_файл должны быть последними в строке, перед ними должен быть ровно один пробел. Все з_файлы создаются до начала работы. Может быть до 10 различных з_файлов.
(1)a\ | текст Добавить. Вывести текст перед чтением следующей входной строки. |
---|---|
(2)b метка | Перейти к команде :, содержащей метку. Если метка пуста, перейти на конец сценария. |
(2)c\ | текст Заменить. Удалить содержимое буфера. При 0 или 1 адресе или в конце 2-адресного диапазона вывести текст. Начать новый цикл. |
(2)d | Удалить содержимое буфера. Начать новый цикл. |
(2)D | Удалить начало буфера, до первого перевода стро- ки. Начать новый цикл. |
(2)g | Заменить содержимое буфера содержимым хранилища. |
(2)G | Добавить к содержимому буфера содержимое хранили- ща. |
(2)h | Заменить содержимое хранилища содержимым буфера. |
(2)H | Добавить к содержимому хранилища содержимое буфе- ра. |
(1)i\ | текст Вставить. Вывести текст. |
(2)l | Вывести буфер, заменяя непечатные символы на пары символов ASCII и разбивая длинные строки. |
(2)n | Скопировать буфер на стандартный вывод. Заменить содержимое буфера на следующую входную строку. |
(2)N | Добавить к буферу следующую входную строку с сох- ранением символа перевода строки. (Текущий номер строки изменяется). |
(2)p | Скопировать буфер на стандартный вывод. |
(2)P | Скопировать начальный сегмент буфера (до первого перевода строки) на стандартный вывод. |
(1)q | Выйти. Перейти на конец сценария. Нового цикла не начинать. |
(2)r ч_файл | Прочитать содержимое ч_файла. Поместить его на стандартный вывод перед чтением следующей входной строки. |
g | Заменить все вхождения регулярного_выражения, а не только первое. |
---|---|
p | Если замена произошла, вывести содержимое буфера. |
w з_файл | Если замена произошла, добавить содержимое буфера к з_файлу. |
(2)t метка | Проверить. Перейти к команде :, содержащей метку, если со времени последнего чтения входной строки или последнего выполнения команды t в буфере выполнялись подстановки. Если метка пуста, перейти на конец сценария. |
---|---|
(2)w з_файл | Записать. Добавить содержимое буфера к з_файлу. |
(2)x | Обменять содержимое буфера и хранилища. |
(2)! функция | Отрицание. Применить функцию (или группу, если функция начинается с {) только к строкам, которые не соответстуют адресам. |
---|---|
(0): метка | Не делает ничего. Содержит лишь метку, на которую может быть осуществлен переход командами t или b. |
(1)= | Вывести в качестве отдельной строки номер текущей строки. |
(2){ | Выполнить следующие команды, вплоть до соответст- вующего символа }. |
(0) | Пустая команда. |