SED(1)
НАЗВАНИЕ 
sed - пакетный редактор
 СИНТАКСИС
 
	sed  [-n] [-e сценарий] [-f с_файл] ... [файл ...]
 
ОПИСАНИЕ 
Sed  копирует указанные файлы (по умолчанию - стандартный ввод), на стандартный вывод, редактируя их в  соответствии  с командами сценария. Опция -f приводит к тому, что сценарий берется из с_файла, этих  опций  может
быть  несколько.  Если  присутствует только опция -e, а
опции -f отсутствуют, флаг -e можно опустить. Опция  -n
подавляет  вывод,  выполняемый  по  умолчанию. Сценарий
состоит из редактирующих команд  (каждая  на  отдельной
строке), имеющих следующий формат:
 	[адрес [, адрес]] функция [аргумент ...]
 В нормальном режиме sed циклически выполняет  следующие
действия:
 
-  Копирует входную строку в буфер  (в  случае,  если
там ничего не осталось от предыдущей команды D).
 -  Применяет к  буферу  последовательно  все  команды
сценария, адреса в которых позволяют их применить.
 -  Копирует буфер на стандартный вывод (если не  указана опция -n) и очищает буфер.
  
Некоторые команды используют хранилище, чтобы запомнить
весь буфер или его часть для  последующего  использования.
 Адрес - это либо  десятичное  число,  означающее  номер
входной строки в совокупности входных файлов,  либо  $,
означающий последнюю входную строку,  либо  контекстный
адрес, то есть /регулярное_выражение/ в стиле редактора
ed(1) со следующими модификациями:
 
-  В контекстном адресе конструкция  ?регулярное_выражение?,  где  ?  -  любой  символ,  эквивалентна
конструкции  /регулярное_выражение/.  Например,  в
контекстном адресе xabcxdefx  второй x  означает
сам себя,  поэтому  значением  выражения  является
abcxdef.
 -  Управляющая  последовательность  n  соответствует
символу перевода строки, который включается в  буфер.
 -  Точка . соответствует любому символу,  кроме  последнего перевода строки в буфере.
 -  Командная строка без адреса применима к любому буферу.
 -  Командная строка с одним адресом применима к буферу с соответствующим адресом.
 -  Командная строка с двумя адресами применима к  буферам с адресами в диапазоне от первого до второго
включительно (если второй адрес  является  числом,
которое не превосходит  номера  строки,  выбранной
первой, обрабатывается только одна строка).  Затем
процесс повторяется, начиная с первого адреса.
  
С помощью функции отрицания ! (см. ниже) команды редак-
тирования могут быть применены к буферу, не попадающему
в указанный диапазон адресов.
 В следующем списке функций в скобках указывается макси-
мальное число допустимых адресов для каждой функции.
 Аргумент  текст  состоит  из одной или более строк. Все
строки, кроме последней, заканчиваются на , чтобы  экранировать  символ  перевода строки. Символы  в тексте
трактуются так же, как в  заменяющей  цепочке  символов
команды 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 ч_файл  | 
Прочитать содержимое ч_файла.  Поместить  его  на
стандартный вывод перед чтением следующей входной
строки.
 | 
|---|
  
- (2)s/регулярное_выражение/замена/флаги 
 - 
Подставить замену вместо фрагментов буфера, отождествленных  с  регулярным_выражением.  Вместо  /
можно использовать любой  символ.  Детали  см.  в
ed(1). Флаги могут быть опущены или иметь следующие значения:
| g  |  Заменить все вхождения  регулярного_выражения,
   а не только первое.
 | 
|---|
 | p  |  Если замена произошла, вывести содержимое  буфера.
 | 
|---|
 | w з_файл  | 
   Если замена произошла, добавить содержимое буфера к з_файлу.
 | 
|---|
  
  
| (2)t метка  | 
Проверить. Перейти к команде :, содержащей метку,
если со времени последнего чтения входной  строки
или последнего выполнения команды t в буфере  выполнялись подстановки. Если метка пуста,  перейти
на конец сценария.
 | 
|---|
 | (2)w з_файл  | 
Записать. Добавить содержимое буфера к з_файлу.
 | 
|---|
 | (2)x  |  Обменять содержимое буфера и хранилища.
 | 
|---|
  
- (2)y/цепочка1/цепочка2/ 
 - 
Заменить все символы буфера, содержащиеся  в  цепочке1, на соответствующие символы цепочки2. Длины цепочек должны совпадать.
  
| (2)! функция  | 
Отрицание. Применить функцию  (или  группу,  если
функция начинается с {) только к строкам, которые
не соответстуют адресам.
 | 
|---|
 | (0): метка  | 
Не делает ничего. Содержит лишь метку, на которую
может быть осуществлен переход командами t или b.
 | 
|---|
 | (1)=  |  Вывести в качестве отдельной строки номер текущей
строки.
 | 
|---|
 | (2){  |  Выполнить следующие команды, вплоть до соответст-
вующего символа }.
 | 
|---|
 | (0)  |   Пустая команда.
 | 
|---|
  
СМ. ТАКЖЕ 
awk(1), ed(1), grep(1).
 
 |