Строковый редактор ed

11.02.2018

Теги: LinuxRegExpКомандаРедакторШаблон

При запуске редактора ed, выделяется специальная область внутренней памяти машины. Эта область называется буфером. При редактировании файла, его содержимое копируется в этот буфер и работа идет именно с ним. Замена оригинала производится только при сохранении изменений.

Запуск редактора

ed

или

ed file

где file — это имя нового или уже существующего файла. Для завершения сеанса используется команда q (от quit)

q

Если изменения не были записаны в файл, ed предупредит об этом

?

Для подтверждения выхода без сохранения, введите команду q еще раз. Для сохранения результатов и выхода, нужно ввести две команды:

w
q

При вызове ed без аргумента file, создается новый буфер. Для добавления текста в буфер используется команда a (от append или add). После ее выполнения редактор переходит в режим ввода текста. Для выхода из режима ввода текста введите на пустой строке символ точки «.».

a
Первая строка текста
Вторая строка текста
Третья строка текста
Четвертая строка текста
Пятая строка текста
.

Чтобы посмотреть содержимое буфера, введите команду

1,$p
Первая строка текста
Вторая строка текста
Третья строка текста
Четвертая строка текста
Пятая строка текста

1,$ задают диапазон строк, которые надо напечатать (p от print): 1 — первая строка, $ — последняя строка. Чтобы вывести строки со 2 по 4:

2,4p
Вторая строка текста
Третья строка текста
Четвертая строка текста

Для просмотра одной строки: первой, третьей и последней:

1p
Первая строка текста
3p
Третья строка текста
$p
Пятая строка текста

Для просмотра текущей строки

.p
Четвертая строка текста

Чтобы узнать, какая строка текущая

.=
4

Для записи содержимого буфера в файл используется команда w (от write). Выполнение этой команды приводит к копированию содержимого буфера в указанный файл, старое содержимое файла при этом удаляется.

w example.txt

В ответ ed сообщит количество записанных в файл символов (байт).

Для считывания содержимого файла в буфер используется команда e (от edit):

e some-file.txt

При этом в буфер загружен весь файл some-file.txt и на экране появится количество его символов. Если в буфере до этого уже была какая-либо информация, она уничтожается.

Если вы использовали команду e для считывания файла в буфер, то в команде w необязательно указывать имя файла. Редактор ed помнит имя файла, которое последним использовалось в команде e и команда w по умолчанию будет делать запись в этот файл. Таким образом, сеанс работы с редактором может быть таким:

ed
e some-file.txt
[процесс редактирования]
w
q

Чтобы узнать имя файла, в который будет записан буфер (при указании команды w без параметра), можно использовать команду f (от file):

f
some-file.txt

С помощью команды f можно также менять имя файла для записи содержимого буфера. Например, в результате выполнения команд:

ed some-file.txt
f other-file.txt

в буфер будет загружен файл some-file.txt и затем команда f изменяет имя файла для команды w.

Бывают ситуации, когда нужно считать в буфер файл, не стирая имеющейся до этого в нем информации. Для этой цели подходит команда r (от read). К примеру, по команде:

r some-file.txt

файл some-file.txt считывается и добавляется в конец имеющейся в буфере информации.

Для удаления строк предназначена команда d (от delete). Ее действие подобно действию команды p за исключением того, что d удаляет строки вместо их вывода. Удалить вторую строку

2d

Удалить строки, начиная с четвертой и по последнюю:

4,$d

Команда перемещения m (move) позволяет переместить группу строк из одного места в буфере в другое. Например, поместить первые три строки в конец буфера:

1,3m$

Для поиска строки, содержащую какой-то текст, используйте команду

/шаблон/

Можно использовать в шаблоне регулярные выражения.

  • . — любой одиночный символ
  • ^ — начало строки
  • $ — конец строки
  • * — 0 и более вхождений шаблона слева
  • […] — один из символов в скобках
  • [^…] — любой символ, кроме тех, что в скобках
  • \(…\) — группирует выражение и возвращает найденный текст
  • \{n,m\} — от n до m вхождений шаблона слева

Для замены отдельных слов или букв в строке или группе строк используется команда s. Например, заменить во второй строке символы «вторая» на символы «третья»

2s/вторая/третья/

Еще пример замены

1,$s/ашипка/ошибка/

чтобы исправить первое вхождение последовательности «ашипка» на «ошибка» в каждой строке буфера. Чтобы выполнить замену всех имеющихся вхождений, добавьте символ g (от global):

1,$s/ашипка/ошибка/g

Полное описание редактора ed [pdf]

Поиск: Linux • RegExp • Команда • Редактор • Шаблон

Каталог оборудования
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Производители
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Функциональные группы
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.