Алгоритм работы программы sed

Программа sed - это потоковый редактор, получающий данные из стандартного ввода, изменяющий их в соответствии с инструкциями из командного файла и записывающий результирующий поток в стандартный вывод.

Если вы не создадите командный файл и не укажете флаги для команды sed, то программа sed скопирует стандартный ввод в стандартный вывод без изменений. Входные данный для этой программы поступают из двух источников:

Программа Описание
Поток ввода Поток символов ASCII из файлов или непосредственно с клавиатуры. Эти данные будут отредактированы программой.
Команды Набор адресов и связанных команд, указанных для выполнения в следующем формате:
[Строка1 [,Строка2] ] команда [аргумент]
Параметры Строка1 и Строка2 называются адресами. Они могут представлять собой шаблоны, по которым будет выполнен поиск во входных данных, или номера строк входного потока.

Команды редактирования можно вводить вместе с командой sed с помощью флага -e.

Команда sed построчно считывает входной поток данных в область памяти, называемую областью шаблона. После помещения строки данных в область шаблона sed считывает командный файл и сравнивает адреса в командном файле с символами этой строки. Если будет встречено совпадение, то sed выполнит связанную с данным адресом команду над символами области шаблона. В результате выполнения команды содержимое области шаблона будет изменено и передано на вход последующих команд.

Сравнив все адреса, указанные в командном файле, с содержимым области шаблона, программа sed записывает итоговое содержимое области шаблона в стандартный вывод. После этого из стандартного ввода считывается следующая строка и повторяется процесс, задаваемый командным файлом.

Некоторые команды редактирования изменяют описанную последовательность действий.

На способ выполнения команды sed влияют и заданные вместе с ней флаги.