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





Отобразить указанные строки. Если не задан параметр командной строки -п, эта команда приведет к дублированию строк при выводе. Обычно она используется перед командами, которые изменяют порядок работы с данными (d, N, b) и могут привести к тому, что строка вовсе не будет отображена. См. примеры для h, п и N.
P

[address l[,address2]]P
Отобразить первую часть (до вложенного символа новой строки) многострочной копии, созданной с помощью команды N. То же, что и р, если команда N не применялась к строке.
P

[address]q
Завершить работу по достижении строки address. Указанная строка предварительно посылается на вывод (если не включено подавление потока вывода по умолчанию), как и любой текст, добавленный к этой строке предшествующими командами а и г.
Примеры
Удалить все после указанной строки:
/Garbled text follows :/q
Отобразить только 50 первых строк файла: 50q
q

[address]r file
Добавить содержимое файла к содержимому пространства шаблонов. Между инструкцией г и именем файла должен находиться только один пробел.
Пример
/The list of items follows:/г item_file
r

 

[address/ [,address2]]s/pattern/replacement/[flags]
Заменить соответствие шаблону pattern на replacement во всех указанных строках. Если используются шаблонные адреса, шаблон «//» представляет собой последний заданный адрес. Могут быть указаны следующие ключи:
п Заменить в-ное вхождение соответствия шаблону /pattern/ в каждой из строк диапазона, п может быть любым числом от 1 до 512. По умолчанию п - 1.
g Заменить все вхождения соответствий шаблону /pattern/ в каждой из строк диапазона, а не только первое из вхождений.
р Отобразить строку, если произведена успешная замена. Если произведено несколько таких замен, будет отображено соответствующее количество копий строки.
w file
Записать строку в файл file, если была произведена успешная замена.
Примеры
Вот несколько примеров коротких сценариев с комментариями:
# Замена третьей и четвертой кавычек символами ( и ): /function/{
s/7</3
s/'7)/4 }
Удалить все кавычки в указанной строке: /Title/s/7/д
Удалить первое двоеточие или все кавычки; отобразить результат: s/://P

s/7/ОР

8 Заменить первое "if", но не заменять /lfdef/1 s/if if/

[addressl[,address2]]t [label]
Проверить, были ли произведены какие-либо замены в указанных строках, и если результат положительный, перейти
к строке сценария, содержащей метку :label (см. команды b и :). Если не задана метка label, выполняется переход к концу сценария. Команда t подобна оператору выбора case языка

программирования С или сценариев интерпретатора. Выполняется поочередная проверка всех случаев (cases), и если результат положительный, работа оператора прекращается.
t

Пример

Предположим, требуется заполнить пустые поля базы данных. Имеются следующие записи:

ID: 1 Name: greg Rate: 45 ID: 2 Наше: dale ID: 3

А вот что необходимо получить:

ID: 1 Name: greg Rate: 45 Phone: ?? ID: 2 Name: dale Rate: ?? Phone: ?? ID: 3 Name: ?9?9 Rate: ?? Phone: ??

Для этого следует выяснить количество уже заполненных полей. Посмотрите на сценарий, с помощью которого решается эта задача (поля разделены табуляцией):

s/ID: .* Name: .* Rate . 7& Phone: ??/p t
s/ID: .* Name: . *A Rate: ?? Phone: ??/p t
s/ID: . */& Name: ?? Rate: ?? Phone: ??/p }

[addressl[,address2]]w file
w

Добавить содержимое пространства шаблонов в файл file. Это действие производится при выполнении команды, а не при выводе строк результата. Инструкцию и имя файла должен разделять только один пробел. Команда создает файл, если он еще не существует; а если файл существует, то его
содержание будет перезаписываться при каждом выполнении сценария. Множественные команды записи, выводом для которых служит один и тот же файл, добавляют данные
в конец файла.



   
 

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