Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы OC UNIX_часть3.doc
Скачиваний:
23
Добавлен:
18.04.2015
Размер:
543.23 Кб
Скачать

1.1.4. Нумерация строк

При работе с редактором допускается использование трех способов адресации строк:

  1. Абсолютныйспособ.

Например:

10,20w или 1,5p

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

  1. Относительныйспособ.

Например,–5,+5pнапечатает пять строк, предшествующих текущей, текущую строку и пять строк, следующих за ней. Кроме того, эта команда сместит на пять строк вперед позицию текущей строки.

  1. Контекстныйспособ.

Например,/hello/pвыполнит поиск в прямом направлении и напечатает строку, содержащую образhello. Для краткости можно повторить поиск с помощью команды//. Редакторedподразумевает при этом, что вы ищите последний заданный шаблон.

Например,/program/,/text/pвыполнит поиск в прямом направлении и напечатает строки, находящиеся в диапазоне строк, содержащих образыprogramиtext.

Например,?word?pвыполнит поиск в обратном направлении и напечатает строку, содержащую образword. Повторить поиск в обратном направлении можно командой??.

Возможно совмещение контекстного и относительного метода адресации строк.

Например,?word?–3,.pвыполнит поиск образа «word» в обратном направлении, затем делается смещение на три строки назад и печатаются строки до текущей (то же самое можно представить и в другом виде:?word?–––,.p). При контекстной адресации редактор начинает поиск вслед за текущей строкой. В том случае, когда указанный образ не удается найти до конца файла, редактор переключается на поиск с первой строки файла вплоть до текущей. При поиске в обратном направлении указанный образ ищется от текущей строки до начала файла. Если образ не обнаружен, редактор переключается на поиск с конца файла до текущей строки. Для происходящего во время поиска переключения с начала файла на его конец или с конца файла на начало принят термин «замыкание». Вы можете представить себе файл как список, замкнутый циклически, т.е. последняя строка в нем предшествует первой.

Применение знаков «+» и «–» полезно при просмотре любого файла.

Иногда необходимо перевести контекстное задание строки в ее абсолютный номер. Это команда [адрес]=

Например,/program/=определит вам номер строки, содержащей словоprogram.

При работе с редактором допускается совместное использование абсолютного, относительного и контекстного способов адресации строк. Выбор конкретного способа определяется тем, что вам нужно сделать. Методы адресации строк различаются по степени безопасности. Наиболее безопасен абсолютный, так как он исключает неоднозначность. Относительный способ безопасен при условии, что вы на самом деле находитесь в той части файла, где предполагаете. Контекстная же адресация, несмотря на свое удобство, достаточно опасна.

Общая форма многих команд edимеет следующий вид:

[адрес,адрес][буква_команды][имя файла]

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

Например, для командыwпо умолчанию задаются адреса1,$. Таким образом,wозначает команду1,$wи записывает все сроки на диск. По умолчанию используется текущее имя файла.

Редакторы ОС UNIX нумеруют строки, начиная с первой, но допускают существование условной строки с номером 0, чтобы предоставить возможность перемещения текста в начало файла. Любые строки, помещенные после строки0, попадают в начало файла.

Пробелы между адресной частью и буквой команды не допускаются. В зависимости от команды (a,p,w) действие будет применяться к строкам, заданным в адресной части или возможно к строкам, следующим за адресной частью.

Текущий адрес всегда представляется символом точки (которую нельзя путать с точкой, завершающей сеанс редактирования). Вы можете использовать точку в любом аргументе адреса вместо обычного номера строки.

Пара адресов 1,$и.,$настолько часто используется, что допустимы следующие сокращения:

,p– то же самое, что1,$p(выводит строки от первой до последней);

;p– то же самое, что.,$p(выводит строки с текущей до последней).