Мы — долго запрягаем, быстро ездим, и сильно тормозим.

RFC
Программирование
FreeBSD
man
  vsftpd
  qemu
  dump
  restore
  awk
  sed
  tar
  security
EXIM


www.lissyara.su —> документация —> man —> sed

sed man

Автор: Andy.


Имя

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

Сценарий
sed [-Ealn] command [file ...]
sed [-Ealn] [-e command] [-f command_file] [-i extension] [file ...]

Описание

Утилита sed читает указанный файл, либо стандартный ввод, если файл не указан,
модифицирует ввод, как указано в списке команд. Затем, вход пишется на стандартный
выход.

Одна команда может быть указана, как первый аргумент sed. Множественные команды
могут быть указаны использованием опций -e или -f. Все команды применяются в порядке их указания, вне зависимости от их происхождения.

Доступны следующие опции:

-E Интерпретирует регулярные выражения как расширенные (современные), регулярные выражения чаще, чем основные регулярные выражения. Страница документации на
re_format(7) полностью описывает оба формата.

-a Файлы перечисленные как параметры функции ``w'' создаются (или удаляются)
прежде, чем начнется процесс по умолчанию. Опция -a  заставляет sed откладывать открытие каждого файла до тех пор, пока команда содержащая связную функцию ``w'' не применяется к строке ввода.

-e command Добавляет команды редактирования определенные аргументом command, к списку команд

-f command_file Добавляет команды редактирования найденные в файле command_file к списку команд. Каждая команда редактирования должна быть перечислена в отдельной строке.

-i extension Редактирует файлы с замещением, сохраняя резервную копию с указанным расширением. Если расширение не указано (нулевой длины), резервная копия не будет сохраняться. Не рекомендуется присваивать нулевое расширение к замещаемым файлам, поскольку вы рискуете полностью или частично повредить файл, когда место на диске исчерпано.

-l создает буфер выходных строк

-n по умолчанию, каждая линия ввода выводиться на стандартный вывод, после  того как были применены все команды. Опция -n отменяет это поведение.

Форма команд sed следующая:

[address[,address]]function[arguments]

Пробелы (whitespaces) могут быть вставлены до первого адреса и  частями функции команды.

Обычно sed циклически копирует строку ввода, не включая завершающий символ новой
строки, в шаблон пробелов, (до тех пор, пока кто-нибудь не оставит ``D'' функцию) применяет все команды с адресами которые выбрали этот шаблон, копирует шаблон на стандартный вывод, добавляя символ новой строки и удаляя шаблон.

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

Адреса Sed
Адрес не обязателен, но если он указан, то адрес должен являться номером (который считает строки входных файлов), знаком доллара ('$') который указывает на последнюю введенную строку или контекстный адрес (который содержит регулярное вы ражение которому предшествует, и следует за ним, разделитель).

Командная строка без адресов выбирает каждый шаблон

Командная строка с одним адресом выбирает все шаблоны, которые совпадают с адресом.

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

Редактирование команд может применяться к  невыбранным шаблонам, через использование символа (``!'').

Регулярные выражения sed

Регулярные выражения используемые в sed, по умолчанию, являются основными регулярными выражениями (смотрите re_format(7), для более детальной информации), но вместо них могут использоваться раширенные (новые) регулярные выражения, если будет использован флаг -E.

В добавок, sed имеет следующие дополнения к регулярным выражениям:

1. В контекстном адресе, любой символ отличный от обратного слеша (``\'') или символа новой строки, может использоваться для разграничения регулярного выражения. Так же, использование обратного слеша перед разграничительным символом, заставляет символ являться литерой. Например, в контекстном адресе \xabc\xdefx,
разграничивающим символом в регулярном выражении является ``x'', второй ``x'' будет являться литерой, поэтому регулярное выражение будет ``abcxdef''.

2. последовательности \n совпадает с символом новой строки, встроенным в шаблон. Вы не можете использовать литеры символа новой строки в адресе, или команде подмены.

Единственной особенностью присущей регулярным выражениям sed, является особенность
быть по умолчанию по отношению к последему используемому регулярному выражению. Если регулярное выражение пустое, то есть, только указан разграничивающий символ, в таком случае будет использовано последнее использовавшееся регулярное выражение. Последнее регулярное выражение определяется как последнее использовавшееся  регулярное выражение, как часть адреса или команды подмены, во время запуска, а
не во время компиляции. Например, команда ``/abc/s//XXX/'' заменит ``XXX'' на шаблон ``abc''.

Функции sed

В следующем списке команд, максимальное количество разрешенных адресов для каждой команды показывается как [0addr], [1addr], или [2addr], представляя ноль, один или два адреса. Аргумент text содержит одну или более строк. Что бы включить символ новой строки в текст, поставьте перед ним символ обратного слеша. Другие символы обратного слеша в тексте удаляются и следующие за ними символы рассматриваются как литеры.

Функции ``r'' и ``w'' берут опциональный параметр файла, который должен быть отделен от функционального символа пробелом (whitespace). Каждый файл, заданный как аргумент для sed'а, создается (или содержимое его урезается) прежде, чем начнется любая обработка ввода.

Функции ``b'', ``r'', ``s'', ``t'', ``w'', ``y'', ``!'', и ``:'' принимают дополнительные аргументы. Следующий пример показывает, какие аргументы должны быть отделены из символов функций, пробелами (whitespaces).

Две функции составляют список функций. Список функций sed разделяется символами
новой строки, как показано в следующим примере:
{ function
  function
  ...
  function
}

``{'' может предворяться пробелом и сопровождаться пробелом. Функции могут
предворяться пробелом. Звершающая ``}'' может пердворяться символом новой строки
или пробелом.

[2addr] function-list Запускает  список функций только, когда выбран шаблон.

[1addr]a\
    text Записывает text в стандартный вывод незамедлительно, до попыток прочитать
строку ввода, используется ли функция ``N'' или начинается новый цикл.

[2addr]b[label] Разветвляет функцию ``:'' определенным лейблом. Если лейбл не указан
разветвление происходит в конце скрипта.

[2addr]c\
   text   Удаляет шаблон. С 0 или 1 адреса, или диапазон 2 адресов, text выводится
на стандартный вывод.

[2addr]d Удаляет шаблон и начинает новый цикл.

[2addr]D Удаляет начальный сегмент шаблона через первый символ новой строки и
начинает новый цикл.

[2addr]g Заменяет содержимое шаблона содержимым hold space.

[2addr]G Добавляет символ новой строки, сопровождаемый содержимым hold space.

[2addr]h Замещает содержимое hold space, сождержимым шаблона.

[2addr]H Добавляет символ новой строки, сопровождаемы содержимым шаблона

[1addr]i\
    text Записывает text на стандартный вывод.

[2addr]l (буква эль). Записывает шаблон на стандартный вывод в визуально
однозначной форме. Эта форма следующая:
обратный слэш               \\
сигнал                      \a
form-feed                   \f
возврат каретки             \r
табуляция                   \t
вертикальня табуляция       \v

Непечатные символы записываются как трехзначные восмеричные номера (предваряемые
обратным слешем) для каждого байта в символе (наиболее важные байты сначала).
Длинные строки переносятся с указанием точки переноса в виде обратного слеша
сопровождаемого символом новой строки. Конец каждой строки указан символом ``$''.

[2addr]n Записывает шаблон на стандартный вывод если вывод по умолчанию не был
переопределен, и заменяте шаблон следующей строкой ввода.

[2addr]N Добавляет следующую строку к шаблону, используя встроенный символ новой
строки, для разделения добавляемого материала от оригинального содержимого.

[2addr]p Записывает шаблон на стандартный вывод.

[2addr]P Записывает шаблон до первого символа новой строки, на стандартный вывод.

[1addr]q Разветвляет конец скрипта и выходит без загрузки нового цикла.

[1addr]r file Копирует содержимое file на стандартный вывод сразу же, прежде чем
произойдет следующая попытка чтения строки. Если file не может быть прочитан,
по любой причине, он тихо игнорируется и состояние ошибки не устанавливается.

[2addr]s/regular expression/replacement/flags
Подменяет, замещаемую строку, первым регулярным выражением в шаблоне. Любой символ
отличный от обратного слеша или символа новой строки может быть использован вместо
обратного слеша или символа новой строки, вместо слеша, что бы разделить регулярное
выражение и замещение. Внутри регулярного выражения и замещения, разделитель
регулярных выражений сам может быть использован как литера, если он предварен
обратным слешем.
Амперсанд (``&'') появляется в замене, если замещаемая строка совпадает с регулярным
выражением. Особое значение ``&'' в этом контексте может быть изменено,
предварением амперсанда обратным слешем. Строка ``\#'', где ``#'' цифра, которая
замещается текстом совпавшим с передачей обратного выражения.

Строка может быть разделена добавлением символа новой строки в нее. Для определения
символа новой строки в замещаемой строке, предварите ее обратным слешем.

Значение flags в заменяемой функции - ноль или одна из следующих:

N Создавать замену только для N' повторений регулярного выражения в шаблоне.
g Создавать замену для всех неперекрывающих совпадений регулярного выражения,
не только для первого.
p Записывать шаблон на стандартный вывод, если сделано замещение. Если замещаемая
строка совпадает с замещаемой, она все еще расценивается как замещение.
w Добавляет шаблон к file если замещение произошло. Если замещаемая строка совпадает
с замещаемой, она все еще расценивается как замещение.

[2addr]t [label]
Разветвление функции ``:'' лейбл, если любая замена была сделана с момента
нового чтения строки ввода или запуска функции ``t''. Если лейбл не определен,
разветвление идет до конца скрипта.

[2addr]w file Добавляет шаблон к file.

[2addr]x Меняет содержимое шаблона и hold spaces.

[2addr]y/string1/string2/
Замещает все повторения символа в string1 в шаблоне с соответствующими символами
из string2. Любой символ, отличный от обратного слеша или символа новой строки
может использоваться вместо обратного слеша или символа новой строки для разделения строк. Внутри string1 и string2 обратный слеш сопровождается любым символам отличным от символа новой строки, который является литерой и обратный слеш сопровождаемый ``n'' замещается символом новой строки.

[2addr]!function
[2addr]!function-list
Применяет функцию или список функций только для строк которые не выбраны адресом.

[0addr]:label
Эта функция ничего не делает, она вызывает лейбл в котором команды ``b''
и ``t'' могут разветвляться.

[1addr]=
Записывает номер строки на стандартный вывод спопровождаемый символом новой строки.

[0addr]
Игнорирует пустые строки.

[0addr]#
``#'' и остаток строки игнорируются (расценивается как коментарий), с единственным исключением что если первые два символа в файле являются ``#n'', вывод по умолчанию подавляетс. То же самое, что и определение опции -n в командной строке.

Окружение
Переменные COLUMNS, LANG, LC_ALL, LC_CTYPE и LC_COLLATE препятствуют запуску sed
как описано в environ(7).

Состояние выхода
утилита sed выходит с установкой 0 если выход прошел успешно, и >0 если возникли
ошибки.

Смотрите так же
awk(1), ed(1), grep(1), regex(3), re_format(7)

Стандарт
утилита sed, как ожидается, будет в наборе спецификаций EEE Std 1003.2 (``POSIX.2'')
Опции -E, -a и -i не стандартны для расширений FreeBSD и могут быть недоступны для других операционных систем.

История
команда sed написана L. E. McMahon, появилась в Version 7 AT&T UNIX.

Автор
Diomidis D. Spinellis <dds@FreeBSD.org>

Ошибки
Мультибайтовые символы, содержащие значение 0x5C (ASCII `\') могут быть распознаны
некорректно как продолжение символов строки в аргументах команд `a'', ``c'' и ``i''
Мультибайтовые символы не могут использоваться как разделители с командами
``s'' и ``y''



размещено: 2007-08-30,
последнее обновление: 2007-09-03,
автор: Andy



Хостинг HOST-FOOD

2014-07-27, lissyara
gmirror

Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+Print server FreeBSD 9

Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
2011-11-20, BlackCat
Разъём на WiFi-карту

Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
2011-09-14, manefesto
Настройка git+gitosis

Настройка системы контроля версия исходного кода в связке git+gitosis+ssh
2011-08-14, zentarim
Wi-FI роутер + DHCP + DNS

Настройка Wi-Fi роутера на Freebsd 8 + DNS сервер + DHCP сервер: чтобы Wi-Fi клиенты были в одной подсети с проводными, проводные и беспроводные клиенты получали адреса автоматически по DHCP, кэширующ
2011-06-15, -ZG-
Охранная система на FreeBSD+LPT

В этой статье описана попытка реализации простой охранной системы на базе FreeBSD с подключением к ней охранных устройтсв на LPT порт и видеорегистрацией.
2011-03-13, terminus
ng_nat

Описание работы ng_nat, практическое использование, достоинства и недостатки в сравнении с ipfw nat
2011-02-20, Капитан
Nagios+Digitemp

Статья описывает создание системы оповещения о превышении температуры в специальных помещениях на основе Nagios с использованием программы Digitemp.
2011-02-17, Le1
Zyxel Configuration

Скрипт для массового изменения конфига свичей Zyxel. Берет из файла iplist список ip-шек, заходит последовательно на каждый и выполняет комманды из файла commands, записывая происходящее в лог файл.
2011-02-16, fox
hast carp zfs ucarp cluster

HAST (Highly Available Storage), CARP, UCARP, ZFS, Cluster настройка и одаптация плюс личные размышления…
2011-02-04, BlackCat
Восстановление ZFS

История о том, как был восстановлен развалившийся RAIDZ ZFS-пул (перешедший в FAULTED) с помощью скотча и подручных средств. Или о том, какие приключения ожидают тех, кто не делает резервных копий.
2011-02-03, Капитан
1-Wire

Статья описывает самостоятельное изготовление контроллера DS9097 для съёма показаний с датчиков температуры DS1820 с помощью программы Digitemp.
2011-01-28, Капитан
Температура в серверной

Статья описывает построение системы наблюдения за температурой в помещении серверной с использованием программы Digitemp и выводом графиков в MRTG
2011-01-21, m4rkell
Syslog server

Как то буквально на днях, у нас завалилось, что то в еве) или не в еве не суть. Суть в том, что когда захотели снять логи с хостов esx обнаружили, что хранят эти негодяи логии только за последнии сутк
2011-01-07, lissyara
Canon/gphotofs

Монтирование цифровых фотоаппаратов Canon (PTP) как файловой системы, автоматизация этого процесса через события devd и внешние скрипты.
2010-12-13, Al
IPSec

Описание принципов работы IPSEC и способов аутентификации.
2010-12-07, manefesto
FreeBSD on flash

Было принято решении переехать на USB Flash и установить минимальный джентельменский набор для работы своего роутера. Делаем =)
2010-12-05, Fomalhaut
root ZFS, GPT

Инструкция по установке FreeBSD с использованием в качестве таблицы разделов GPT и в качестве основной файловой системы - ZFS
2010-09-05, Cancer
Настройка аудиоплеера на ximp3

Цели: Простенький аудиоплеер, для того что бы тетя продавец в магазине утром пришла нажала на кнопку Power и заиграла в зале музыка, так же был доступ по сети, общая шара куда можно заливать музыку, к
2010-08-31, Cancer
Установка и настройка OpenVPN

На днях появилась задача - объединить головной офис и 3 филиала в одну сеть через интернет посредством OpenVPN, чтобы люди могли подключаться через RDP к базам 1С на серверах.
2010-08-25, manefesto
freebsd lvm

Использование linux_lvm для работы с LVM разделами из-под FreeBSD. Проблемы которые возники при монтирование lvm раздела
2010-04-30, gonzo111
proftpd file auth&quota

Proftpd - квоты и авторизация из файлов, без использования базы данных и/или системных пользователей
2010-04-22, lissyara
tw_cli

Пошаговая инструкция по восстановлению RAID на контроллере 3ware, из которого выпал один диск. Настройка мониторинга состояния рейда и отчётов о его состоянии на email.
2010-04-14, fox
MySQL Master+Master

MySQL (Master Master) and (Master Slave) Как настроить репликацию…
2010-03-22, Mufanu
named 9.7.0

Система доменных имен (Domain Name Service, DNS) - одна из тех незаметных, закулисных программ, которым не уделяется и половины того внимания, которого они заслуживают.
2010-03-09, terminus
DNS zones

Краткий ликбез про управление DNS зонами. Примеры проведения делегирования прямых и обратных DNS зон.
2010-03-09, aspera
Squid+AD (group access)

Настройка прокси сервера SQUID с автроризацией пользователей в AD. Разделение пользователей на группы
2010-03-02, BlackCat
Шлюз: Часть 4

Настройка дополнительных сервисов: синхронизация времени (OpenNTPD), клиент DynDNS.org.
подписка

    вверх      
Статистика сайта
Сейчас на сайте находится: 12 чел.
За последние 30 мин было: 59 человек
За сегодня было
5020 показов,
623 уникальных IP
 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.1057 секунд
Из них PHP: 50%; SQL: 50%; Число SQL-запросов: 48 шт.
Исходный размер: 61600; Сжатая: 14891