Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Скидка до 20% на услуги дата-центра. Аренда серверной стойки. Colocation от 1U!

Миграция в облако #SotelCloud. Виртуальный сервер в облаке. Выбрать конфигурацию на сайте!

Виртуальная АТС для вашего бизнеса. Приветственные бонусы для новых клиентов!

Виртуальные VPS серверы в РФ и ЕС

Dedicated серверы в РФ и ЕС

По промокоду CITFORUM скидка 30% на заказ VPS\VDS

VPS/VDS серверы. 30 локаций на выбор

Серверы VPS/VDS с большим диском

Хорошие условия для реселлеров

4VPS.SU - VPS в 17-ти странах

2Gbit/s безлимит

Современное железо!

SED(1)

НАЗВАНИЕ
sed - пакетный редактор

СИНТАКСИС


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

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

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

В нормальном режиме sed циклически выполняет следующие действия:

  1. Копирует входную строку в буфер (в случае, если там ничего не осталось от предыдущей команды D).
  2. Применяет к буферу последовательно все команды сценария, адреса в которых позволяют их применить.
  3. Копирует буфер на стандартный вывод (если не указана опция -n) и очищает буфер.

Некоторые команды используют хранилище, чтобы запомнить весь буфер или его часть для последующего использования.

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

  1. В контекстном адресе конструкция \?регулярное_выражение?, где ? - любой символ, эквивалентна конструкции /регулярное_выражение/. Например, в контекстном адресе \xabc\xdefx второй x означает сам себя, поэтому значением выражения является abcxdef.
  2. Управляющая последовательность \n соответствует символу перевода строки, который включается в буфер.
  3. Точка . соответствует любому символу, кроме последнего перевода строки в буфере.
  4. Командная строка без адреса применима к любому буферу.
  5. Командная строка с одним адресом применима к буферу с соответствующим адресом.
  6. Командная строка с двумя адресами применима к буферам с адресами в диапазоне от первого до второго включительно (если второй адрес является числом, которое не превосходит номера строки, выбранной первой, обрабатывается только одна строка). Затем процесс повторяется, начиная с первого адреса.

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

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

Аргумент текст состоит из одной или более строк. Все строки, кроме последней, заканчиваются на \, чтобы экранировать символ перевода строки. Символы \ в тексте трактуются так же, как в заменяющей цепочке символов команды s, и могут использоваться для экранирования начальных пробелов и табуляций, которые обычно из командной строки удаляются. Аргументы ч_файл и з_файл должны быть последними в строке, перед ними должен быть ровно один пробел. Все з_файлы создаются до начала работы. Может быть до 10 различных з_файлов.
(1)a\ текст Добавить. Вывести текст перед чтением следующей входной строки.
(2)b метка Перейти к команде :, содержащей метку. Если метка пуста, перейти на конец сценария.
(2)c\ текст Заменить. Удалить содержимое буфера. При 0 или 1 адресе или в конце 2-адресного диапазона вывести текст. Начать новый цикл.
(2)d Удалить содержимое буфера. Начать новый цикл.
(2)D Удалить начало буфера, до первого перевода стро- ки. Начать новый цикл.
(2)g Заменить содержимое буфера содержимым хранилища.
(2)G Добавить к содержимому буфера содержимое хранили- ща.
(2)h Заменить содержимое хранилища содержимым буфера.
(2)H Добавить к содержимому хранилища содержимое буфе- ра.
(1)i\ текст Вставить. Вывести текст.
(2)l Вывести буфер, заменяя непечатные символы на пары символов ASCII и разбивая длинные строки.
(2)n Скопировать буфер на стандартный вывод. Заменить содержимое буфера на следующую входную строку.
(2)N Добавить к буферу следующую входную строку с сох- ранением символа перевода строки. (Текущий номер строки изменяется).
(2)p Скопировать буфер на стандартный вывод.
(2)P Скопировать начальный сегмент буфера (до первого перевода строки) на стандартный вывод.
(1)q Выйти. Перейти на конец сценария. Нового цикла не начинать.
(2)r ч_файл Прочитать содержимое ч_файла. Поместить его на стандартный вывод перед чтением следующей входной строки.

(2)s/регулярное_выражение/замена/флаги
Подставить замену вместо фрагментов буфера, отождествленных с регулярным_выражением. Вместо / можно использовать любой символ. Детали см. в ed(1). Флаги могут быть опущены или иметь следующие значения:
g Заменить все вхождения регулярного_выражения, а не только первое.
p Если замена произошла, вывести содержимое буфера.
w з_файл Если замена произошла, добавить содержимое буфера к з_файлу.
(2)t метка Проверить. Перейти к команде :, содержащей метку, если со времени последнего чтения входной строки или последнего выполнения команды t в буфере выполнялись подстановки. Если метка пуста, перейти на конец сценария.
(2)w з_файл Записать. Добавить содержимое буфера к з_файлу.
(2)x Обменять содержимое буфера и хранилища.
(2)y/цепочка1/цепочка2/
Заменить все символы буфера, содержащиеся в цепочке1, на соответствующие символы цепочки2. Длины цепочек должны совпадать.
(2)! функция Отрицание. Применить функцию (или группу, если функция начинается с {) только к строкам, которые не соответстуют адресам.
(0): метка Не делает ничего. Содержит лишь метку, на которую может быть осуществлен переход командами t или b.
(1)= Вывести в качестве отдельной строки номер текущей строки.
(2){ Выполнить следующие команды, вплоть до соответст- вующего символа }.
(0) Пустая команда.

СМ. ТАКЖЕ
awk(1), ed(1), grep(1).

Бесплатный конструктор сайтов и Landing Page

Хостинг с DDoS защитой от 2.5$ + Бесплатный SSL и Домен

SSD VPS в Нидерландах под различные задачи от 2.6$

✅ Дешевый VPS-хостинг на AMD EPYC: 1vCore, 3GB DDR4, 15GB NVMe всего за €3,50!

🔥 Anti-DDoS защита 12 Тбит/с!

VPS в 21 локации

От 104 рублей в месяц

Безлимитный трафик. Защита от ДДоС.

🔥 VPS до 5.7 ГГц под любые задачи с AntiDDoS в 7 локациях

💸 Гифткод CITFORUM (250р на баланс) и попробуйте уже сейчас!

🛒 Скидка 15% на первый платеж (в течение 24ч)

Новости мира IT:

Архив новостей

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 7861149
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2019 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...