Главная страница
Библиотека (скачать книги)
Скачать софт
Введение в программирование
Стандарты для C++
Уроки по C#
Уроки по Python
HTML
Веб-дизайн
Ассемблер в среде Windows
ActiveX
Javascript
Общее о Линукс
Линукс - подробно
Линукс - новое
Delphi
Паскаль для начинающих
Турбопаскаль
Новости
Партнеры
Наши предложения
Архив новостей





Глава 12

Редактор sed

Темы, рассмотренные в этой главе:
Общий обзор sed
Синтаксис командной строки
Синтаксис команд sed
Перечень команд sed по группам
Алфавитный перечень команд sed

Более подробную информацию можно найти во втором издании книги Дэйла Дауэрти (Dale Dougherty) и Арнольда Роббинса (Arnold Robbins) «sed & awk» издательства O'Reilly.

Общий обзор sed
Редактор sed является пакетным или поточно-ориентированным (stream-oriented) редактором. Редактор интерпретирует сценарий и выполняет указанные в нем действия. Он поточно-ориентированный, поскольку, подобно
многим программам Unix, читает информацию со стандартного ввода и выдает ее, измененную, на стандартный вывод. Например, программа sort -поточно-ориентированная, a vi — нет. Ввод sed, как правило, поступает из файла, но возможен и ввод с клавиатуры. Вывод по умолчанию поступает на терминал, но может быть перенаправлен в файл.
Обычно sed используется для:
Автоматического редактирования одного или нескольких файлов
Автоматизации повторяющихся изменений многочисленных файлов
Создания программ преобразования

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

• Исходный обрабатываемый файл не изменяется, поскольку sed обрабатывает копии исходных строк. Обработанные копии посылаются на стандартный вывод (либо в файл при перенаправлении)

Синтаксис командной строки
Существует два варианта запуска sed:
sed [options] 'command' file(s) sed [options] -f scriptfilefde(s)
В первом варианте возможно задание команды редактирования sed (заключенной в одинарные кавычки) в командной строке. Во втором варианте задается файл сценария scriptfile, содержащий команды sed. Если не заданы обрабатываемые файлы, происходит чтение со стандартного ввода.
Доступны следующие параметры командной строки:
—е cmd
Следующий аргумент является инструкцией редактирования; параметр необходим только при задании более чем одной инструкции.
-f scrip fde
Аргумент является файлом, содержащим команды редактирования.
-п Подавить вывод по умолчанию; sed отображает строки только по команде р или при установленном ключе р команды s.
-V Отобразить номер версии sed.
—quiet
Идентично -п. —expression=cmd
Идентично - е. —file=/ite
Идентично
—help
Отобразить краткую справку, включающую информацию по параметрам командной строки.
—silent
Идентично -п. —version
Идентично -V.

Синтаксис команд sed
Общий вид команд sed:
[address[,address]][l]command[arguments]
Команды состоят из адресов и инструкций редактирования (commands). Инструкции являются отдельными буквами или символами; они описаны далее в этой главе в алфавитном порядке и по группам. Аргументы (arguments) могут содержать метки для инструкций b и t или имена файлов для инструкций г и w, а также ключи подстановок для инструкции s. Адреса (addresses) описаны ниже.

Адресация шаблонов
Примеры
s/xx/yy/g /BSD/d
/"BEGIN/,/-END/p /SAVE/!d
/BEGIN/,/END/!s/xx/yy/g

В команде sed адрес может отсутствовать или могут быть заданы один или пара адресов. Адрес может являться номером строки, символом $ (адрес последней строки) или регулярным выражением, заключенным в символы «/» {/шаблон/)Регулярные выражения описаны в главе 9 «Шаблоны и поиск». Кроме того, в sed можно использовать \п для нахождения символа новой строки в пространстве шаблонов (появившегося в результате выполнения команды N), но не в конце пространства шаблонов.
Адрес
Команда применяется к

Отсутствует
Каждой из исходных строк

Один адрес
Каждой строке с таким адресом. Некоторые инструкции


могут использоваться только с одним адресом : a, i, r, q и =

Пара адресов, разделен-
Диапазону строк, соответствующему адресам

ных запятыми

За адресом следует сим-
Ко всем строкам, адрес которых не совпадает с указанным

вол «!»

Заменить все строки (все вхождения)
Удалитьстроки, содержащие BSD Отобразить строки от BEGIN до END включительно Удалить все строки, которые не содержат SAVE
Произвести замену во всех строках диапазона между
BEGIN и END
Фигурные скобки ({}) используются для задания вложенных адресов или для применения нескольких команд к одному адресу:
[/'addresi/[,/'address?]]{
commandl
commandE
)
Открывающая фигурная скобка должна быть последним символом в строке, а закрывающая - единственным символом в строке. Пробелы после скобок не допустимы.



   
 

Библиотека программиста. 2009.
Администратор: admin@programmer-lib.ru