Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Операционная система UNIX.doc
Скачиваний:
94
Добавлен:
01.05.2014
Размер:
1.67 Mб
Скачать

6.7.1. Команда печати (n)

Команда печати n распечатывает текст и предваряет каждую строку текста номером по порядку. Эту команду полезно использовать перед удалением, созданием или изменением строк.

Формат команды:

[n[, k]]n<CR>

где n, k - номера начальной и конечной печатаемых строк.

Пример использования клманды "n":

Пример.

1, $n<CR>

1 This is the first line of test.

2 This is the second line.

3 This is the third line.

4 This is the fourth line.

5 five

6 six

7 seven

8 eight

9 nine

10 ten

6.8. Команда удаления строк (d)

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

Формат команды:

[n[, k]]d<CR>

где n, k - номера начальной и конечной удаляемых строк.

Команде "d" может предшествовать один или два номера строки. Если номер не задан, то редактор удаляет текущую строку.

Если задан номер только одной строки, то удаляется указанная строка, текущей становится строка, следующая за удаленной.

Если задано два номера строки, то удаляются все строки в указанном интервале от n до k включительно. Текущей строкой всегда становится строка, следующая за последней удаленной строкой, кроме случая, когда удаляется последняя строка буфера. В этом случае текущей станет последняя строка буфера.

Пример.

4, $d

Удаление из буфера строк с 4-й по последнюю включительно. В буфере после выполнения команды останется 3 первых строки. Текущей строкой станет третья строка буфера. 6.9. Команда отмены редакции (u)

В некоторых случаях обнаруживается, что внесенные изменения не были необходимы или оказались неверными. Команда отмены редакции может быть использована для приведения только что измененной строки в ее исходное состояние:

u<CR>

Например, команда u полезна для восстановления текста, случайно вами удаленного. Если вы удалили все строки в файле и затем ввели команду "p", редактор ed ответит "?", что означает, что в файле нет ничего. Воспользуйтесь командой u для восстановления текста. Экран будет выглядеть следующим образом:

1, $p<CR>

This is the first line.

This is the middle line.

This is the last line.

1, $d<CR>

p<CR>

?

u<CR>

p<CR>

This is the last line.

Примечание. Команда u не может быть использована с командой w или q.

6.10. Команда замены (s)

Команда замены "s" предназначена для изменения отдельных слов или символов в пределах одной строки или группы строк.

Общий формат команды:

[n[, k]]s/x/y/[команда]<CR>

где x - группа символов или слов в строке, которые надо заменить (старый текст); y - группа символов или слов, которые заменяют старое значение, указанное как "x" (новый текст); n, k - номера начальной и конечной строк буфера, в пределах которых осуществляется замена; /команда - одна из следующих 4-х команд: g - заменить каждое появление группы символов (x) в каждой указанной строке; l - отобразить последнюю строку замененного текста, включая непечатаемые символы; n - отобразить последнюю строку замененного текста, вместе с номерами строк; p - отобразить последнюю строку замененного текста.

Если номера строк не указаны, замена осуществляется в текущей строке.

Если указан номер только одной строки, то замена производится только в одной строке.

Для реализации замены в группе строк надо указать номера начальной (n) и конечной (k) строк, в пределах которых надо произвести замену.

При выполнении данной команды редактор просматривает строки, начиная с номера "n" и кончая номером "k" включительно. При обнаружении в какой-либо из них искомой группы "x" редактор заменяет ее на "y".

Редактор не печатает результат замены автоматически, поэтому для контроля рекомендуется вместе с командой замены задавать команду печати.

Если в командной строке указаны "n" и "k" и команда печати, то печатается только последняя измененная строка.

Текущей строкой после выполнения команды замены остается последняя строка, в которой произведена замена части текста.

Пример.

1, $s/a/a2/p

замена символа "a" на "a2" производится в строках с 1-й по последнюю. Текущей станет последняя строка, она будет распечатана.

Используя команду "s", можно удалить группу символов (или один символ) в строке. Для этого команда замены должна быть задана следующим образом:

s/x//

что фактически означает: заменить группу символов в текущей строке на "пусто", т.е. просто удалить заданные символы из строки.

Команда "s" заменяет лишь первую найденную искомую группу символов в строке. Если же надо заменить все случаи появления заданной комбинации символов в строке, используется команда "g":

s/x/y/g

Примеры.

s/c/d/gp

все появления символа "c" в текущей строке заменить символом "d" и распечатать строку;

1, $s/c/d/gp

замена всех символов "c" на символ "d" во всем буфере с печатью последней измененной строки.

В следующем примере содержится ошибка ввода. Пока строка, содержащая ошибку является текущей, произведите корректировку в ней. Старый текст: "ai" в слове "airor", новый текст - "er". Экран выглядит следующим образом:

Пример.

a<CR>

In the beginning, I made an airor.<CR>

.<CR>

.p<CR>

In the beginning, I made an airor.<CR>

s/ai/er/<CR>

Обратите внимание, что ed не дает ответа на команду замены. Чтобы проверить, что команда выполнилась успешно, выполните команду "p" или "n" как часть командной строки замены. .lin В следующем примере команда "n" используется для проверки того, что слово "file" заменит слово "toad".

Пример.

.p<CR>

This is a last toad

s/toad/file/n<CR>

1 This is a last file

Чтобы заменить текст в строке, отличной от текущей, укажите номер строки.

Например, на следующем экране командная строка включает номер строки, которая будет изменена (строка 1), т.к. текущей является строка 3.

Пример.

1, 3p<CR>

This is a past toad

testing testing

come in toad

.<CR>

come in toad

1s/past/test<CR>

This is a test toad

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

Наиболее универсальным средством ed является глобальная замена. Поместив команду "g" после последнего ограничителя в командной строке замены, вы сможете заменить каждое появление шаблона в каждой указанной строке. Заменим строку "es" на "ES":

u<CR>

1, $p<CR>

This is a last toad

testing testing

come in toad

testing 1, 2, 3

1, $s/es/ES/g<CR>

This is a last toad

tESting tESting

come in toad

tESting 1, 2, 3

Другой способ - это использование глобального шаблона для поиска вместо указания границ строк:

u<CR>

1, $p<CR>

This is a test toad

testing testing

come in toad

testing 1, 2, 3

g/test/s/es/ES/g<CR>

1, 3p<CR>

This is a tESt toad

tESting tESting

come in toad

tESting 1, 2, 3

Рассмотрим следующие шаблоны:

/шаблон<CR>

?шаблон<CR>

v/шаблон<CR>

В следующем примере формат поиска v/шаблон используется для нахождения строк, которые не содержат шаблон "testing". Затем команда "s" используется для замены шаблона "in" на шаблон "out" в этих строках:

v/testing/s/in/out<CR>

This is a test toad

come out toad

Соседние файлы в предмете Операционные системы