OpenXS Russian Man Pages Содержание Домой... В конец страницы

sed(1)

sed(1)

НАЗВАНИЕ

sed - потоковый редактор

СИНТАКСИС

sed [-n] [-e сценарий] [-f файл_сценария] [файл ...]

ОПИСАНИЕ

sed копирует указанный файл (по умолчанию, стандартный входной поток) в стандартный выходной поток, редактируя его в соответствии с командами сценария. При указании опции -f сценарий берется из заданного файла_сценария; эти опции накапливаются. Если используется только одна опция -e и нет опций -f, флаг -e можно не указывать. Опция -n подавляет выдачу в выходной поток по умолчанию.

sed обрабатывает символы дополнительного набора и распознает символы дополнительного набора в комментариях файлов сценариев (см. ниже) в соответствии с локалью, указанной в переменной среды LC_CTYPE (см. LANG в ed(1).

Сценарий состоит из команд редактирования, по одной в строке, имеющих следующий вид:

[адрес[,адрес]]функция[аргументы]

При обычной работе, sed циклически копирует прочитанную строку в область поиска (pattern space) (если только не осталось чего-нибудь после выполнения команды D), применяет последовательно все команды, адреса которых соответствуют области поиска, и, в конце сценария, копирует область поиска в стандартный выходной поток (если только не указана опция -n), а затем удаляет область поиска.

Некоторые команды используют карман (hold space) для сохранения всей или части области поиска для последующего извлечения.

Адрес представляет собой либо десятичное число - порядковый номер входной строки, накапливающийся от файла к файлу, либо символ $, обозначающий последнюю входную строку, либо контекстный адрес, т.е. /регулярное_выражение/ в стиле ed(1) со следующими изменениями:

В контекстном адресе конструкция \?регулярное_выражение?, где ? - произвольный символ, идентична /регулярному_выражению/. Учтите, что в контекстном адресе \xabc\xdefx второй х используется буквально, так что будет использовано регулярное выражение abcxdef.

Управляющая последовательность \n соответствует новой строке, находящейся в области поиска.

Точка (.) соответствует любому символу в области поиска, за исключением завершающей новой строки.

Команда без адресов соответствует каждой области поиска.

Команда с одним адресом будет применяться для каждой области поиска, соответствующей адресу.

Команда с двумя адресами применяется включительно для всех областей поиска от первой, соответствующей первому адресу, до следующей, соответствующей второму. (Если второй адрес представляет собой число, меньшее или равное номеру строки, выбранному первым адресом, обрабатывается только строка, соответствующая первому адресу.) После этого процесс повторяется и снова ищется соответствие первому адресу.

Можно применять команды редактирования для областей поиска, не соответствующих указанным адресам, если указать функцию отрицания ! (см. ниже).

В следующем списке функций максимально допустимое количество адресов для каждой функции указано в скобках.

Аргумент текст состоит из одной или более строк, все из которых, кроме последней, заканчиваются символом обратной косой (\), скрывающим новую строку. Обратные косые в тексте рассматриваются буквально в строке замены команды s. Аргумент rfile или wfile должен быть последним в строке и перед ним необходимо указать ровно один пробел. Каждый файл wfile создается перед началом обработки. Можно использовать не более 10 различных аргументов wfile.

(1)a\
текст
Добавление (append). Поместить текст в выходной поток перед чтением следующей входной строки.
(2)b метка
Переход (branch) на команду : с соответствующей меткой. Если метка пустая, переход на конец сценария.
(2)c\
текст
Изменение (change). Удалить область поиска. Поместить текст в выходной поток. Начать следующий цикл.
(2)d
Удалить область поиска. Начать следующий цикл.
(2)D
Удалить начальный сегмент области поиска вплоть до первой новой строки. Начать следующий цикл.
(2)g
Заменить содержимое области поиска на содержимое кармана.
(2)G
Добавить содержимое кармана к области поиска.
(2)h
Заменить содержимое кармана на содержимое области поиска.
(2)H
Добавить содержимое области поиска к содержимому кармана.
(1)i\
текст
Вставка. Поместить текст в стандартный выходной поток.
(2)l
Выдать область поиска в стандартный выходной поток в недвусмысленном виде. Непечатные символы выдаются в восьмеричной записи, а длинные строки переносятся.
(2)n
Копировать область поиска в стандартный выходной поток. Заменить область поиска на следующую входную строку.
(2)N
Добавить следующую входную строку к области поиска с встроенным символом новой строки. (Номер текущей строки изменяется.)
(2)p
Печать. Скопировать область поиска в стандартный выходной поток.
(2)P
Скопировать начальный сегмент области поиска до первого символа новой строки в стандартный выходной поток.
(1)q
Выход. Перейти на конец сценария. Не начинать новый цикл.
(2)r rfile
Прочитать содержимое файла rfile. Поместить его в стандартный выходной поток перед чтением следующей входной строки.
(2)s/регулярное_выражение/замена/флаги
Подставляет строку замены вместо вхождений регулярного_выражения в области поиска. Вместо / можно использовать любой символ. Более полное описание см. на странице справочного руководства ed(1). Флаги представляют собой ноль или более следующих конструкций:
n n=1-512. Делать подстановку только для n-ного вхождения регулярного_выражения.
g Глобальная подстановка. Подставить вместо всех не перекрывающихся вхождений регулярного_выражения, а не только вместо первого.
p Выдать область поиска в выходной поток, если была сделана замена.
w wfile Запись. Добавить область поиска к файлу wfile, если была сделана замена.
(2)t метка
Проверка (test). Перейти на команду : с соответствующей меткой, если с момента считывания текущей входной строки или с момента последнего выполнения команды t была выполнена подстановка. Если метка пустая, перейти на конец сценария.
(2)w wfile
Запись (write). Добавляет область поиска к файлу wfile. При первом выполнении w файл wfile будет стерт. При последующих вызовах w будет выполняться добавление. При каждом выполнении команды sed файл wfile перезаписывается.
(2)x
Поменять местами содержимое области поиска и кармана.
(2)y/строка1/строка2/
Преобразование. Заменяет все вхождения символов в строке1 на соответствующие символы из строки2. Строка1 и строка2 должны состоять из одинакового количества символов. Если в строках указаны символы дополнительного набора, результат не гарантирован.
(2)! функция
Отрицание. Применяет функцию (или группу функций, если в качестве функции указана {) только к строкам, не соответствующим указанному адресу или адресам.
(0): метка
Эта команда ничего не делает; она просто задает метку для перехода из команд b и t.
(1)=
Помещает номер текущей строки в стандартный выходной поток в качестве отдельной строки.
(2){
Выполняет следующие команды, вплоть до соответствующей закрывающей скобки }, только если область поиска соответствует адресу.
(0)
Пустая команда игнорируется.
(0)#
Если # является первым символом в строке в файле сценария, то вся строка рассматривается как комментарий, с одним исключением: если символ # указан в первой строке и после него указан символ n, то подавляется вывод области поиска по умолчанию. Остаток строки после #n также игнорируется. Файл сценария должен содержать хотя бы одну строку, не являющуюся комментарием. Комментарии могут включать символы дополнительного набора.

ФАЙЛЫ

/usr/lib/locale/локаль/LC_MESSAGES/uxcore.abi
файл сообщений для текущего языка (См. LANG в environ(5).)

ССЫЛКИ

awk(1), ed(1), grep(1)

Copyright 1994 Novell, Inc.
Copyright 2000 В. Кравчук, OpenXS Initiative, перевод на русский язык


Содержание Домой... Сервер CIT Forum В начало страницы
Дизайн: В. Кравчук