Служба поддержки:
Реквизиты оплаты:





Голосование
Реклама от Google:
152 Часть II. Приложение идей
19.06.2012 14:44
|
дение числа 1987 на 1988 или каждое словосочетание «в данный момент времени» на «теперь». Систематические изменения часто делаются также и в файлах, содержащих тексты программ: программисты постоянно совершенствуют свои программы, изменяя имена переменных, форматы и т. д. Редактор позволяет выполнять массовые замены. Для этого перед командой s надо задать пару адресов, задающих диапазон, в котором должна проводиться замена. Например, команда 1,$s/Грег/Кирилл/gp заменяет все вхождения Грег на Кирилл (так как эта замена осуществляется в диапазоне с первой по последнюю строку). Будем надеяться, что в тексте нет слов Грегори, поскольку они превратились бы в Кириллори. Одна из причуд редактора ed состоит в том, что буква р в конце приведенной команды замены вызывает печать только последней строки, в которой была сделана замена, а не каждой такой строки. Буква g, стоящая перед р, имеет важное значение. Она означает, что заменяется каждое слово Грег в каждой строке внутри заданного диапазона адресов; если бы мы опустили g, то была бы произведена замена только первого употребления слова Грег в каждой строке текста внутри заданного диапазона адресов. Поэтому строка Она взглянула на Грега. Грег улыбнулся. В качестве другого примера систематической замены (в данном случае в ограниченном диапазоне строк) может служить команда .—10,. +lOs/он/она/ заменяющая он на она в десяти строках до и после текущей строки (включая, естественно, и саму текущую строку). Регулярные выражения в команде grep Вы, вероятно, помните, что команда оболочки grep образец файл ... печатает все строки файла(ов), которые содержат данный образец. В предыдущих примерах образец представлялся всегда фиксированной цепочкой. Ранее в этой главе мы упоминали, что в качестве образца может быть любое регулярное выражение, |