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


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




Начало  Назад  Вперед