Отобразить указанные строки. Если не задан параметр командной строки -п, эта команда приведет к дублированию строк при выводе. Обычно она используется перед командами, которые изменяют порядок работы с данными (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. Это действие производится при выполнении команды, а не при выводе строк результата. Инструкцию и имя файла должен разделять только один пробел. Команда создает файл, если он еще не существует; а если файл существует, то его
содержание будет перезаписываться при каждом выполнении сценария. Множественные команды записи, выводом для которых служит один и тот же файл, добавляют данные
в конец файла.
<< Назад В начало Далее >> |