Застосування регулярних виразів для обробки тексту. Потоковий текстовий редактор SED. Опис опцій, адресація приклади

Sed -- это неинтерактивный строчный редактор. Он принимает текст либо с устройства stdin, либо из текстового файла, выполняет некоторые операции над строками и затем выводит результат на устройство stdout или в файл. Как правило, в сценариях, sed используется в конвейерной обработке данных, совместно с другими командами и утилитами.

Sed определяет, по заданному адресному пространству, над какими строками следует выполнить операции. [1] Адресное пространство строк задается либо их порядковыми номерами, либо шаблоном. Например, команда 3d заставит sed удалить третью строку, а команда /windows/d означает, что все строки, содержащие "windows", должны быть удалены.

Полезен для:

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

· SED копирует строку из input (стандартный или указываемый набор файлов) в PATTERN SPACE (некоторая область), и к этой строке применяет все команды, адреса которых попадают в PATTERN SPACE . ЗатемPATTERN SPACE копируется в output . (Фактически в PATTERN SPACE находится одна строка, за исключением команды N , см.4. Функции SED )

· Формат:

· SED [-n] [-e script] [-f sfile] [files]

· script - набор команд редактирования SED , который может содержать до 200 команд или до 10000 байт.

· sfile - файл со скриптом SED .

· files - файлы, предназначенные для SED -редактирования.

· -n - указывает, что в output выводятся не все строки, но только те, к которым применялась команда p. (См. 4.Функции SED . и 5.Функция контекстной замены.)

· Флаг -e может быть опущен, если он присутствует один.

· Команда SED :

· [address[,address]] function [arguments]

· адрес адрес функция аргументы

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

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

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

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

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

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

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

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

Адресация в командах SED

С помощью адресации происходит отбор строк для редактирования.

Адрес:

  • Десятичный номер строки;
  • $ - последняя строка input ;
  • Регулярное выражение.

Если адреса не указаны, то команда применяется ко всем pattern space;

Если присутствует один адрес, то команда применяется ко всем тем pattern space, куда попадает этот адрес;

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

Sed использует ключ -e для того, чтобы определить, что следующая строка является инструкцией, или набором инструкций, редактирования. Если инструкция является единственной, то использование этого ключа не является обязательным.


Наши рекомендации