1. Главная
  2. /
  3. Soft
  4. /
  5. Потоковый редактор SED — ман на русском языке

Потоковый редактор SED — ман на русском языке

НАЗВАНИЕ
sed — потоковый редактор (Stream EDitor)Синтаксис
СИНТАКСИС
sed [опции]… {скрипт-только-если-нет-другого-скрипта} [файл(ы)-входные-данные]…
ОПИСАНИЕ
Sed это потоковый редактор. Потоковый редактор используется для преобразования текста в виде входящего потока (из файла, или из входного pipe потока). Sed эффективен тем, что совершает лишь одно действие над вводом за проход и способен фильтровать текст в конвейере. Sed может использоваться как фильтр, для обработки текстов.
-n, ––quiet, ––silent
Подавление автоматического вывода буфера после обработки. sed после прохождения каждого цикла сценария распечатывает обрабатываемую область шаблона. Эти опции отключают автоматический вывод, который может быть включен лишь явным указанием ключа p для sed.
-e script, ––expression=script
Добавить sed скрипт для обработки. Добавляет команды в сценарий к набору выполняемых команд при обработке ввода.
-f script-file, ––file=script-file
Добавляет к выполняемым командам, команды содержащиеся в файле, файл рассматривается как sed скрипт.
Добавляет команды содержащиеся в сценарии к набору выполняемых команд при обработке ввода.
––follow-symlinks
Следуйте символическим ссылкам при обработке на месте
-i[SUFFIX], ––in-place[=SUFFIX] Редактирование файла на месте. Возможно создание резервной копии, если используется суффикс.
-l N, ––line-length=N
Задаёт значение для обрезки строк командой ‘l’.
––posix
отключить все GNU расширения.
-E, -r, ––regexp-extended
Использование расширенных регулярных выражений в скрипте (для переносимости используйте POSIX-E).
-s, ––separate
Файлы рассматриваются как отдельный, а не как единый непрерывный длинный поток.
Сепарация потока на отдельные файлы, по умолчанию, sed считает все входящие файлы как один длинный поток, с этой опцией файлы разделены (например, для каждого файла первая строка будет именно первой, а адрес $ будет совпадать с каждой последней строкой, а не только с последней строкой последнего файла).
––sandbox
работать в режиме песочницы.
-u, ––unbuffered
Использование минимально возможного размера буферов. Загружать минимальные объемы данных из входных файлов и чаще очищать выходные буферы
-z, ––null-data
отдельные строки символами NUL
––help
Показать краткую справку и выйти. Выводит подсказку о способе использования, вкратце сообщает о параметрах командной строки, с которыми он может быть запущен, адрес, куда можно сообщить об обнаруженных в работе программы ошибках, и затем завершает работу.
––version
Показать номер версии и выйти. Сообщает версию запущенного sed, версию лицензионного соглашения, под которым он распространяется и завершает работу.
Если не применяются опции -e, ––expression, -f, или ––file, тогда первый аргумент не являющийся опцией интерпретируется как sed скрипт. Все остальные аргументы интерпретируются как входящие файлы. Если файл для обработки не задан, sed читает данные из входного потока.
СИНТАКСИС КОМАНД
Это краткое описание команд. Оно предназначено для тех, кто уже знаком с работой этого редактора. Для изучения полного описания команд, смотрите sed info.
Безадресные команды
: label
Задаёт метку — label, для перехода к ней командами b и t.
#comment
Комментарий, который продолжается до конца строки (или до конца фрагмента скрипта в опции -e).
}
Закрывающая скобка блока {…}.
Команды которые используются без адреса или с одним адресом
= Вывод номера текущей строки.
a \
text Вывод в выходной поток text‘а, после вывода обработанного буфера. Можно вывести несколько строк, если в конце каждой строки добавить обратный слеш ‘\’.
Добавляет текст, где в каждой новой строке вставляется символ обратной косой черты.
i \
text Также как a, но text выводится перед буфером.
Вставить текст, в котором каждая новая строка вставки должна начинаться с обратной косой черты.
q [ exit-code] Немедленный выход из скрипта. При этом больше никаких данных из входного потока не обрабатывается. исключение является не отключеная автоматическая печать, в этом случае будет напечатано текущее пространство шаблона.
Если разрешён вывод буфера, то он выводится в выходной поток.
Q [exit-code] Также как q, но буфер не выводится.
r filename
Добавляет к выводу текст прочитанный из filename.
R filename
Добавляет к выводу одну строку прочитанную из filename.
Команды, которые можно использовать с диапазоном адресов.
{ Начала блока команд. (В конце блока ставится }).
b label
Переход на метку label. Если такой метка не задана, то переход выполняется в конец скрипта.
c \
text Заменить выбранные строки текстом, в котором каждая встроенная новая строка должна начинаться с обратной косой черты.
d Удалить шаблон пространства. Начать следующий цикл.
D Если в шаблонном пространстве нет новой строки, начните обычный новый цикл, как если бы была введена команда d. В противном случае, удалите текст в пространстве шаблона до первой новой строки и перезапустите цикл с полученным пространством шаблона, не читая новую строку ввода.
h H Копировать/добавить пробел для хранения пробела.
g G Копировать/добавить удерживаемое пространство в пространство шаблона.
l Перечислить текущую строку в ‘визуально однозначной’ форме.
l width
Выведите текущую строку в виде ‘визуально однозначного’, разбивая ее на width — ширину символов. Это GNU расширение.
n N Прочитать/добавить следующую строку ввода в пространство шаблона.
p Распечатать текущее пространство шаблона.
P Печать до первой встроенной новой строки текущего пространства шаблона.
s/regexp/replacement/
Попытаться сопоставить регулярное выражение с пространством шаблона. В случае успеха replacement/, заменить соответствующую часть. replacement может содержать специальный символ & для обозначения соответствующей части, и специальные экранированные символы от \ 1 до \ 9 для ссылки на соответствующие выражения и подвыражения в регулярном выражении.
t label
Если команда s/// произвела успешный поиск и замену последней прочитанной строки, то эта команда передаёт управление на label — метку. Если label — метка не задана, переход осуществляется в конец скрипта.
T label
Если никакая s/// не выполнила успешную замену с момента считывания последней строки ввода и с момента последней команды t или T, то переход к label — метке; если label — метка опущена, переход к концу скрипта. Это GNU расширение.
w filename
Записать текущее пространство шаблона в файл filename.
W filename
Запишите первую строку текущего пространства шаблона в имя файла. Это GNU расширение.
x Обменяйте содержимое пространств, удержания и шаблона.
y/source/dest/
Транслитерируйте символы в пространстве образца, которые появляются в источнике, в соответствующий символ в dest.
АДРЕСАЦИЯ
Команды Sed могут быть заданы без адресов, в этом случае команда будет выполнена для всех входных строк; или с двумя адресами, в этом случае команда будет выполнена для всех входных строк соответствующих включенному диапазону строк, начиная с первого адреса и до второго адреса. В отношении диапазонов адресов следует отметить три вещи: синтаксис addr1, addr2 (то есть адреса разделяются запятой); строка, которой соответствует addr1, всегда будет принята, даже если addr2 выберет более раннюю строку; и если addr2 является регулярным выражением, оно не будет проверено на соответствие строке addr1.
После адреса (или адресного диапазона), и перед командой, можно поставить !, который приведёт к инвертированию адреса. Команда выполнится для всех строк кроме той, что совпадает с адресом или с адресным диапазоном.
Поддерживаемые типы адресных выражений:
number Соответствует только указанному number — номеру строки (который накапливается в разных файлах, если в командной строке не указан параметр -s).
first~step
Соответствуйте каждой строке шага, начиная с первой строки. Например, ‘sed -n 1~2p’ выведет все нечетные строки во входном потоке, а адресное выражение ‘2~5’ будет соответствовать каждой пятой строке, начиная со второй. Первым может быть ноль; в этом случае sed работает так, как если бы он был равен шагу. Это GNU расширение.
$ Совпадает с последней строкой последнего файла (или с последней строкой каждого файла при использовании опции -s).
/regexp/
Совпадает со строкой, в которой найдётся выражение regexp.
\cregexpc
Совпадает со строкой, в которой найдётся выражение regexp. (c может быть любым символом.)
GNU sed также, поддерживает несколько специальных диапазонов адресов:
0,addr2
Начните с состояния «совпадающего первого адреса», пока не будет найден адрес addr2. Это похоже на 1, addr2, за исключением того, что если addr2 соответствует самой первой строке ввода, то 0, форма addr2 будет в конце своего диапазона, тогда как форма 1, addr2 все еще будет в начале своего диапазона. Это работает только тогда, когда addr2 является регулярным выражением.
— т.е. этот диапазон работает в точности так же как 1,adr2, в случае если самая первая строка не совпадает с adr2. Если первая строка совпадает с adr2, то весь диапазон совпадает только с этой строкой (выражение 1,adr2 совпадает со строками начиная с первой, и далее для всех, до строки совпадающей с adr2, при этом проверяются строки начиная со второй, первая не проверяется).
addr1,+N
Будет соответствовать addr1 и N строк после addr2.
addr1,~N
Совпадает со строками от addr1 и до строки, которая кратна N включительно. Кратность проверяется начиная со строки следующей за строкой addr1. К примеру, 4,~4 совпадает со строками 4,5,6,7, и 8. Восемь — ближайшее кратное к четырём начиная с пяти.
— т.е. будет соответствовать addr1 и линиям, которые будут следовать addr1, до следующей строки, чей номер входной строки кратен N.
РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ
Регулярные выражения стандарта POSIX.2 полностью НЕ поддерживаются, полная поддержка этого стандарта приведёт к проблемам производительности. Символ ‘\n‘ в регулярных выражениях совпадает с символом перевода строки, кроме того, поддерживаются символы ‘\a‘, ‘\t‘ и другие.
ОШИБКИ
Сообщения об ошибках высылайте по электронной почте на [email protected]. Также, пожалуйста, включите вывод ‘sed ––version’ в текст вашего отчета, если это возможно.
АВТОР
Авторы Джей Фенласон, Том Лорд, Кен Пиццини и Паоло Бонзини. Домашняя страница GNU sed: . Общая помощь с использованием программного обеспечения GNU: . Сообщения об ошибках по электронной почте: .
АВТОРСКОЕ ПРАВО
Copyright © 2017 Free Software Foundation, Inc. Лицензия GPLv3 +: GNU GPL версии 3 или более поздней версии . Это бесплатное программное обеспечение: вы можете изменять и распространять его. НЕ ПРЕДОСТАВЛЯЕТСЯ ГАРАНТИИ, если это разрешено законом.
СМОТРИТЕ ТАКЖЕ
awk (1), ed (1), grep (1), tr (1), perlre (1), sed.info, любая из различных книг по sed, FAQ по sedsed поддерживается в виде руководства в формате Texinfo. Если программы info и sed правильно установлены на вашем сайте, команда
info sed
должна предоставить вам доступ к полному руководству.
sed 4.4 Февраль 2017 SED(1)

Поделиться ссылкой на статью

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Заполните поле
Заполните поле
Пожалуйста, введите корректный адрес email.
Вы должны согласиться с условиями для продолжения

Категории

Меню