Операционные системы - статьи

         

I. Потоковый редактор sed


Команда имеет формат:

sed [ -n ] [ -e script ] [ -f sfile ] [ files ]

Команда копирует файлы (по умолчанию со стандартного

входа) на стандартный выход, редактирует их в соответствии со

своими(!) командами, размещенными в "script" (в командном

файле или строке редактора [а не shell!]). По флагу "-f"

берет берет файл команд из файла "sfile"; Если есть

только опция "-e script", то флаг "-e" можно

опустить. Флаг "-n" подавляет вывод (происходящий по

умолчанию). "script" состоит из команд редактирования,

по одной в строке, имеющих формат:

[ addr [ , addr ] ] cmd [ args ]

"sed" циклически преобразует входные строки

в выходные.

Адреса "[ addr [ , addr ] ]" - это либо

номера строк, либо последняя строка (символ "$"), либо



регулярные выражения в стиле редактора "ed":

  • "\" используется в многострочных командах

    для экранирования продолжения строки.

  • "." совпадает с любым символом.

  • Если адреса не указаны - просматриваются все входные

    строки.

  • Если один адрес, то выбираются совпадающие строки.

  • Если заданы два адреса, выбираются строки в заданном

    интервале.

  • "!cmd" выполняется команда "cmd",

    для строк, которые не были выбраны по адресам.

    Для следующих (основных) функций (команд) максимальное

    число допустимых адресов указано в скобках.

    (1)a\ text Добавляет text после указанной строки

    Команда:

    who

    Результат:

    root tty1 Mar 13 17:23

    mas tty2 Mar 13 18:50

    sae tty6 Mar 13 17:24

    sae tty5 Mar 13 17:24

    Пример:

    who | sed '2a\

    новая строка

    '

    Результат:

    root tty1 Mar 13 17:23

    mas tty2 Mar 13 18:50

    новая строка

    sae tty6 Mar 13 17:24

    sae tty5 Mar 13 17:24

    (2)b label Осуществляет переход к команде ("cmd")

    "label:cmd". Если метка ("label") отсутствует,

    то переход на конец командного файла.

    Пример:

    who | sed '2a\

    новая строка

    b lb

    2d

    : lb 3d

    '

    Результат:

    root tty1 Mar 13 17:23



    Содержание раздела