| Сервер поддерживается Центром Информационных Технологий (095) 932-9212, 932-9213, 939-0783 E-mail: info@citforum.ru

Сервер содержит море(!) аналитической информации | CIT Forum CD-ROM

### SED(1)

НАЗВАНИЕ
sed - пакетный редактор

СИНТАКСИС

    	sed  [-n] [-e сценарий] [-f с_файл] ... [файл ...]

ОПИСАНИЕ
Sed копирует указанные файлы (по умолчанию - стандартный ввод), на стандартный вывод, редактируя их в соответствии с командами сценария. Опция -f приводит к тому, что сценарий берется из с_файла, этих опций может быть несколько. Если присутствует только опция -e, а опции -f отсутствуют, флаг -e можно опустить. Опция -n подавляет вывод, выполняемый по умолчанию. Сценарий состоит из редактирующих команд (каждая на отдельной строке), имеющих следующий формат:

[адрес [, адрес]] функция [аргумент ...]

В нормальном режиме sed циклически выполняет следующие действия:

1. Копирует входную строку в буфер (в случае, если там ничего не осталось от предыдущей команды D).
2. Применяет к буферу последовательно все команды сценария, адреса в которых позволяют их применить.
3. Копирует буфер на стандартный вывод (если не указана опция -n) и очищает буфер.

Некоторые команды используют хранилище, чтобы запомнить весь буфер или его часть для последующего использования.

Адрес - это либо десятичное число, означающее номер входной строки в совокупности входных файлов, либо $, означающий последнюю входную строку, либо контекстный адрес, то есть /регулярное_выражение/ в стиле редактора ed(1) со следующими модификациями:

1. В контекстном адресе конструкция \?регулярное_выражение?, где ? - любой символ, эквивалентна конструкции /регулярное_выражение/. Например, в контекстном адресе \xabc\xdefx второй x означает сам себя, поэтому значением выражения является abcxdef.
2. Управляющая последовательность \n соответствует символу перевода строки, который включается в буфер.
3. Точка . соответствует любому символу, кроме последнего перевода строки в буфере.
4. Командная строка без адреса применима к любому буферу.
5. Командная строка с одним адресом применима к буферу с соответствующим адресом.
6. Командная строка с двумя адресами применима к буферам с адресами в диапазоне от первого до второго включительно (если второй адрес является числом, которое не превосходит номера строки, выбранной первой, обрабатывается только одна строка). Затем процесс повторяется, начиная с первого адреса.

С помощью функции отрицания ! (см. ниже) команды редак- тирования могут быть применены к буферу, не попадающему в указанный диапазон адресов.

В следующем списке функций в скобках указывается макси- мальное число допустимых адресов для каждой функции.

Аргумент текст состоит из одной или более строк. Все строки, кроме последней, заканчиваются на \, чтобы экранировать символ перевода строки. Символы \ в тексте трактуются так же, как в заменяющей цепочке символов команды 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).

Comments: info@citmgu.ru Designed by Andrey Novikov Copyright © CIT