И, наконец,
ed
обладает высоким быстродействием. Вполне возможно вызвать
ed
, заменить в файле одну строку, записать новую версию и вернуться из него, причем все это происходит быстрее, чем один только запуск большого и более сложного экранного редактора.
Основные сведения
Программа
ed
редактирует один файл за один раз. Она работает с копией файла. Чтобы внести исправления в первоначальный файл, вы должны дать явную команду. Редактор предоставляет команды для манипуляций с последовательными строками или строками, соответствующими образцу, а также команды для внесения в строки изменений.
Каждая команда
ed
представляет собой символ (обычно букву). Большинству команд может предшествовать один или два номера строки, которые указывают, на какую строку или строки должна воздействовать команда: в противном случае подразумевается номер, принятый по умолчанию. Номер строки можно специфицировать абсолютной позицией в файле (1, 2 ...), символами
$
для последней строки и "
.
" для текущей, процедурой поиска по образцу, использующей регулярные выражения, и их аддитивными комбинациями.
Рассмотрим, как с помощью
ed
можно создавать файлы, используя стихи Де Моргана из первой главы.
$ ed poem
? poem
Предупреждение: файл poem не существует
а
Начать добавление строк
Great fleas have little fleas
upon their backs to bite 'em,
And little fleas have lesser fleas,
and so ad infinitum.
.
Печатаем '.' чтобы закончить ввод
w poem
Пишем строки в файл poem
121
ed сообщает, что записан 121 символ
q
Выход
Команда
а
добавляет или присоединяет строки. Режим добавления заканчивается строкой, состоящей из одной точки. Из-за отсутствия индикации режима, в котором вы работаете, возможны две распространенные ошибки: ввод текста без команды
а
и ввод команды до ввода '
.
'.
Редактор
ed
никогда не будет писать ваш текст в файл автоматически; вы должны задать это с помощью команды
w
. Однако, если вы пытаетесь закончить редактирование без записи ваших изменений,
ed
выдает '
?
' как предупреждение. Есть другая команда
q
, позволяющая завершить работу независимо от внесения исправлений.
$ ed poem
121
Файл существует и имеет 121 символ
а
Добавить еще строки в его конец
And the great fleas themselfs, in turn,
have greater fleas to go on;
While these again have greater still,
and greater still, and so on.
.
Печатаем '.' для завершения
q
Пытаемся выйти
?
Предупреждение: не было записи
w
Нет имени файла; подразумевается poem
263
q
Теперь можно выходить
$ wc poem
Проверьте для уверенности
8 46 263 poem
$
Временная передача управления
shell
с помощью '
!
'
Если вы запустили
ed
, то можете временно выйти из него, чтобы запустить другую команду
shell
. В этом случае нет необходимости прекращать работу достаточно ввести команду
ed
'
!
'.
$ ed poem
! wc poem
Запуск wc без выхода из ed
8 46 263 poem
!
Вернулись из команды
q
Выход без w годится: не было исправлений
$
Печать
Строки файла нумеруются как 1, 2 … Вы можете печатать
n
-ю строку, дав команду
np
или просто номер
n
, и строки с
m
по
n
, используя
m,np
. "Номером строки"
$
обозначается последняя строка, так что строки можно не считать.
1
| Печатать первую строку; 1р то же самое |
$
| Печатать последнюю строку; $p то же самое |
1,$p
| Печатать строки с первой по последнюю |
Печатать файл по одной строке проще всего; нажимая клавишу
RETURN
, вы можете вернуться на одну строку назад с помощью '
-
'. Можно комбинировать номера строк с '
+
' и '
-
'.
$-2,$p
| Печатать последние три строки |
1,2+3p
| Печатать строки с первой по пятую |
Однако нельзя печатать после конца файла или в обратном порядке; команды типа
$,$+1p
и
$,1p
считаются незаконными.
Команда
list 1
выводит текст в формате с видимыми символами. Это удобно при поиске в файлах управляющих символов, при различении пробелов, табуляции и т.п. (см.
vis
в гл. 7).
Образцы
Как только размер начинает превышать две строки, становится неудобным печатать его весь целиком, чтобы отыскать нужную строку. Редактор
ed
предлагает способ поиска строк, совпадающих с некоторым образцом, шаблоном:
/pattern/
обнаруживает очередное вхождение
pattern
.