сед


sed («редактор потока») — это утилита Unix , которая анализирует и преобразует текст с помощью простого и компактного языка программирования. sed разрабатывался с 1973 по 1974 год Ли Э. МакМахоном из Bell Labs [ 1] и сегодня доступен для большинства операционных систем. [2] sed был основан на функциях сценариев интерактивного редактора ed («редактор», 1971) и более раннего qed («быстрый редактор», 1965–66). sed был одним из первых инструментов для поддержки регулярных выражений и до сих пор используется для обработки текста, особенно с командой подстановки. Популярные альтернативные инструменты для манипулирования строками открытого текста и «потокового редактирования»AWK и Perl .

Впервые появившись в Версии 7 Unix , [3] sed — одна из первых команд Unix, созданных для обработки файлов данных из командной строки. Он развился как естественный преемник популярной команды grep . [4] Первоначальная мотивация была аналогом grep (g/re/p) для замены, отсюда «g/re/s». [3] Предвидя, что для каждой команды также появятся дополнительные специализированные программы, такие как g/re/d, МакМахон написал универсальный построчный потоковый редактор, который стал sed. [4] Синтаксис для sed, особенно использование /для сопоставления с образцом и s///для подстановки, возник из ed, предшественник sed, который широко использовался в то время [4] , а синтаксис регулярных выражений повлиял на другие языки, особенно на ECMAScript и Perl . Позже был разработан более мощный язык AWK , и они функционировали как двоюродные братья, позволяя выполнять мощную обработку текста с помощью сценариев оболочки . sed и AWK часто называют прародителями и источником вдохновения для Perl, и они повлияли на синтаксис и семантику Perl, особенно в операторах сопоставления и подстановки.

В GNU sed добавлено несколько новых функций, в том числе редактирование файлов на месте. Super-sed — это расширенная версия sed, включающая регулярные выражения, совместимые с Perl . Другим вариантом sed является minised , изначально переработанный из 4.1BSD sed Эриком С. Рэймондом и в настоящее время поддерживаемый Рене Ребе . minised использовался проектом GNU до тех пор, пока проект GNU не написал новую версию sed на основе новой библиотеки регулярных выражений GNU. Текущая версия minised содержит некоторые расширения BSD sed, но не так многофункциональна, как GNU sed. Его преимущество в том, что он очень быстрый и использует мало памяти. [ссылка необходима ]Он используется во встроенных системах и представляет собой версию sed , поставляемую сMinix. [ нужна ссылка ]

sed — это построчная утилита обработки текста: она считывает текст построчно из входного потока или файла во внутренний буфер, называемый пространством шаблонов . Каждая прочитанная строка запускает цикл . К пространству шаблонов sed применяет одну или несколько операций, которые были указаны с помощью сценария sed . sed реализует язык программирования с примерно 25 командами , определяющими операции над текстом. Для каждой входной строки после запуска сценария sed обычно выводит пространство шаблонов (строка, измененная сценарием) и снова начинает цикл со следующей строки. Другие варианты поведения в конце сценария доступны через параметры sed и команды сценария, напримерdдля удаления области шаблона, qдля выхода, Nдля немедленного добавления следующей строки в область шаблона и т.д. Таким образом, сценарий sed соответствует телу цикла, который перебирает строки потока, где сам цикл и переменная цикла (номер текущей строки) являются неявными и поддерживаются sed.