Введение

Стандартная утилита UNIX для редактирования потоков данных.

Утилита обработки текста sed ("редактор потоков") – это утилита Unix, которая анализирует и преобразует текст, используя простой и компактный язык программирования. Она была разработана в 1973–1974 годах Ли Э. Макмахоном из Bell Labs и доступна сегодня для большинства операционных систем. sed была основана на скриптовых возможностях интерактивного редактора ed ("редактор", 1971) и более раннего qed ("быстрый редактор", 1965–1966). Это был один из первых инструментов, поддерживающих регулярные выражения, и до сих пор используется для обработки текста, особенно с командой подстановки. Популярными альтернативными инструментами для манипулирования текстовыми строками и "редактирования потоков" являются AWK и Perl.

Команда замены

Следующий пример демонстрирует типичное и наиболее частое применение sed: подстановка. Именно это применение изначально и послужило мотивацией для создания sed:

Ограничения и альтернативы

Хотя sed прост и ограничен, он достаточно мощный для решения широкого круга задач. Для более сложной обработки обычно используются более мощные языки, такие как AWK или Perl. Они особенно полезны, когда преобразование строки требует большего, чем извлечение по регулярному выражению и замена по шаблону, хотя теоретически произвольно сложные преобразования возможны с использованием буфера удержания. В то же время, для более простых операций часто предпочтительнее специализированные утилиты Unix, такие как grep (вывод строк, соответствующих шаблону), head (вывод начала файла), tail (вывод конца файла) и tr (преобразование или удаление символов). Для задач, для которых они предназначены, такие специализированные утилиты обычно проще, понятнее и быстрее, чем более универсальное решение, такое как sed. Команды и синтаксис ed/sed продолжают использоваться в производных программах, например, в текстовых редакторах vi и vim. Аналогом ed/sed является связка sam/ssam, где sam – это редактор Plan 9, а ssam – потоковый интерфейс к нему, обеспечивающий функциональность, схожую с sed.