Руководства по командной строке

Man » Онлайн-руководство sed - подробная онлайн-документация для страницы руководства sed

🌍
sed - потоковый редактор для фильтрации и преобразования текста

СИНТАКСИС

sed [-V] [--version] [--help] [-n] [--quiet] [--silent]
[-l N] [--line-length=N] [-u] [--unbuffered]
[-E] [-r] [--regexp-extended]
[-e script] [--expression=script]
[-f script-file] [--file=script-file]
[script-if-no-other-script]
[file...]

ОПИСАНИЕ

Sed — это потоковый редактор. Потоковый редактор используется для выполнения базовых преобразований текста во входном потоке (файле или вводе из конвейера). Хотя он в некотором смысле похож на редактор, который позволяет выполнять скриптовые правки (например, ed), sed работает, выполняя только одно прохождение по входным данным, и, следовательно, является более эффективным. Но именно способность sed фильтровать текст в конвейере отличает его от других типов редакторов.

-n, --quiet, --silent

подавляет автоматическую печать буфера шаблона

--debug

добавляет аннотации к выполнению программы

-e script, --expression=script

добавляет скрипт к командам, которые будут выполнены

-f script-file, --file=script-file

добавляет содержимое script-file к командам, которые будут выполнены

--follow-symlinks

переходит по символическим ссылкам при обработке на месте

-i[SUFFIX], --in-place[=SUFFIX]

редактирует файлы на месте (создает резервную копию, если указан SUFFIX)

-l N, --line-length=N

указывает желаемую длину переноса строк для команды `l`

--posix

отключает все расширения GNU.

-E, -r, --regexp-extended

использует расширенные регулярные выражения в скрипте (для переносимости используйте POSIX -E).

-s, --separate

рассматривает файлы как отдельные, а не как один непрерывный длинный поток.

--sandbox

работает в режиме "песочницы" (отключает команды e/r/w).

-u, --unbuffered

загружает минимальное количество данных из входных файлов и чаще очищает выходные буферы.

-z, --null-data

разделяет строки символами NUL

--help
отображает эту справку и завершает работу

--version
выводит информацию о версии и завершает работу

Если не указаны параметры -e, --expression, -f или --file, то первый аргумент, не являющийся параметром, принимается в качестве скрипта sed для интерпретации. Все остальные аргументы — это имена входных файлов; если не указаны входные файлы, то считывается стандартный ввод.

Домашняя страница GNU sed: [https://www.gnu.org/software/sed/]. Общая справка по использованию программного обеспечения GNU: [https://www.gnu.org/gethelp/>. Отправляйте сообщения об ошибках по адресу: <_].

Упаковано Debian. Авторское право © 2022 Free Software Foundation, Inc. Лицензия GPLv3+: GNU GPL версии 3 или более поздней [https://gnu.org/licenses/gpl.html]. Это свободное программное обеспечение: вы можете изменять и распространять его. Нет никакой ГАРАНТИИ в той мере, в какой это разрешено законом.

СИНТАКСИС КОМАНД

Это всего лишь краткий синопсис команд sed, чтобы послужить напоминанием для тех, кто уже знаком с sed; для получения более подробных описаний необходимо обратиться к другой документации (например, к документу texinfo).

Команды с нулевым адресом \`

: label

Метка для команд b и t.

#comment

Комментарий продолжается до следующей новой строки (или до конца фрагмента скрипта -e).

}

Закрывающая скобка блока { }.

Команды с нулевым или одним адресом

=

Печатает текущий номер строки.

a \

text

Добавляет текст, в котором каждая внедренная новая строка предшествует символу обратной косой черты.

i \

text

Вставляет текст, в котором каждая внедренная новая строка предшествует символу обратной косой черты.

q [exit-code]

Немедленно завершает работу скрипта sed, не обрабатывая больше входных данных, за исключением того, что, если автоматическая печать не отключена, текущий буфер шаблона будет напечатан. Аргумент exit-code является расширением GNU.

Q [exit-code]

Немедленно завершает работу скрипта sed, не обрабатывая больше входных данных. Это расширение GNU.

r filename

Добавляет текст, прочитанный из filename.

R filename

Добавляет строку, прочитанную из filename. При каждом вызове команды считывается строка из файла. Это расширение GNU.

Команды, которые принимают диапазоны адресов

{

Начало блока команд (завершается }).

b label

Переход к метке; если метка опущена, переход в конец скрипта.

c \

text

Заменяет выбранные строки текстом, в котором каждая внедренная новая строка предшествует символу обратной косой черты.

d

Удаляет буфер шаблона. Начинает следующий цикл.

D

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

h H

Копирует/добавляет буфер шаблона в буфер удержания.

g G

Копирует/добавляет буфер удержания в буфер шаблона.

l

Выводит текущую строку в визуально однозначной форме.

l width

Выводит текущую строку в визуально однозначной форме, разбивая ее на width символов. Это расширение GNU.

n N

Считывает/добавляет следующую строку входных данных в буфер шаблона.

p

Печатает текущий буфер шаблона.

P

Печатает до первой внедренной новой строки текущего буфера шаблона.

s/regexp/replacement/

Пытается сопоставить regexp с буфером шаблона. В случае успеха заменяет сопоставленную часть на replacement. Замена может содержать специальный символ & для ссылки на ту часть буфера шаблона, которая была сопоставлена, и специальные escape-последовательности \1 до \9 для ссылки на соответствующие подвыражения, сопоставленные в regexp.

t label

Если s/// выполнил успешное замещение с момента последнего чтения строки входных данных и с момента последней команды t или T, то переходит к метке; если метка опущена, переходит в конец скрипта.

T label

Если s/// не выполнил успешного замещения с момента последнего чтения строки входных данных и с момента последней команды t или T, то переходит к метке; если метка опущена, переходит в конец скрипта. Это расширение GNU.

w filename

Записывает текущий буфер шаблона в filename.

W filename

Записывает первую строку текущего буфера шаблона в filename. Это расширение GNU.

x

Обменивает содержимое буферов удержания и шаблона.

y/source/dest/

Транслитерирует символы в буфере шаблона, которые появляются в source, на соответствующий символ в dest.

Адреса

Команды sed могут быть заданы без адресов, в этом случае команда будет выполнена для всех строк ввода; с одним адресом, в этом случае команда будет выполнена только для строк ввода, которые соответствуют этому адресу; или с двумя адресами, в этом случае команда будет выполнена для всех строк ввода, которые соответствуют включительному диапазону строк, начинающемуся с первого адреса и продолжающемуся до второго адреса. Три вещи, которые следует отметить в адресных диапазонах: синтаксис addr1,addr2 (т.е. адреса разделены запятой); строка, с которой сопоставлен addr1, всегда будет принята, даже если addr2 выберет более раннюю строку; и если addr2 является регулярным выражением, оно не будет проверяться для строки, с которой сопоставлен addr1.

После адреса (или адресного диапазона) и перед командой может быть вставлен символ !, который указывает, что команда должна быть выполнена только в том случае, если адрес (или адресный диапазон) не соответствует.

Поддерживаются следующие типы адресов:

number Соответствует указанному номеру строки (который накапливается последовательно для всех файлов, если только не указан параметр -s в командной строке).

first~step Соответствует каждой step-й строке, начиная со строки first. Например, `sed -n 1~2p` выведет все строки с нечетными номерами во входном потоке, а адрес 2~5 будет соответствовать каждой пятой строке, начиная со второй. first может быть равен нулю; в этом случае sed работает так, как если бы он был равен step. (Это расширение.)

$ Соответствует последней строке.

/regexp/ Соответствует строкам, соответствующим регулярному выражению regexp. Соответствие выполняется в текущем буфере шаблонов, который может быть изменен с помощью команд, таких как `s///`.

\cregexpc Соответствует строкам, соответствующим регулярному выражению regexp. Символ c может быть любым.

GNU sed также поддерживает некоторые специальные 2-адресные формы:

0addr2 Начните с состояния "соответствует первому адресу", пока не будет найден addr2. Это похоже на 1addr2, за исключением того, что если addr2 соответствует самой первой строке ввода, форма 0,addr2 будет в конце своего диапазона, тогда как форма 1,addr2 все еще будет в начале своего диапазона. Это работает только тогда, когда addr2 является регулярным выражением.

addr1,+N Соответствует addr1 и N строкам, следующим за addr1.

addr1,~N Соответствует addr1 и строкам, следующим за addr1, до следующей строки, номер строки которой является кратным N.

РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ

POSIX.2 BRE должны поддерживаться, но они не полностью поддерживаются из-за проблем с производительностью. Последовательность \n в регулярном выражении соответствует символу новой строки, и аналогично для \a, \t и других последовательностей. Параметр -E переключает на использование расширенных регулярных выражений; он поддерживался GNU sed на протяжении многих лет и теперь включен в POSIX.

ОШИБКИ

Отправляйте сообщения об ошибках по адресу _. Пожалуйста, также включите вывод команды sed --version в текст вашего сообщения, если это возможно.

АВТОР

Написано Jay Fenlason, Tom Lord, Ken Pizzini, Paolo Bonzini, Jim Meyering и Assaf Gordon.

Эта программа sed была создана с поддержкой SELinux. SELinux отключен в этой системе.

Домашняя страница GNU sed: [https://www.gnu.org/software/sed/]. Общая справка по использованию программного обеспечения GNU: [https://www.gnu.org/gethelp/>. Отправляйте сообщения об ошибках по адресу: <_].

СМОТРИТЕ ТАКЖЕ

awk(1), ed(1), grep(1), tr(1), perlre(1), sed.info, любая из различных книг о sed, часто задаваемые вопросы по sed (http://sed.sf.net/grabbag/tutorials/sedfaq.txt), http://sed.sf.net/grabbag/.

Полная документация для sed поддерживается в виде руководства Texinfo. Если программы info и sed установлены на вашем сайте должным образом, команда

info sed

должна предоставить вам доступ к полному руководству.