mark.zlatoust.ru Послать письмо Webmaster-у Web-Master © Бернадинер Марк 

Златоуст.Ru

 

 

      SED(1)                                                   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).



 

 

Бернадинер Марк Абрамович

Мое резюме

Компьютерная страничка

Ресурсы сети

Фотоальбом

 

 

 

mark.zlatoust.ru Послать письмо Webmaster-у Web-Master © Бернадинер Марк