UNIX — универсальная среда программирования - Брайан Керниган
Шрифт:
Интервал:
Закладка:
Строки могут быть объединены с помощью команды j (пробелы не добавляются):
m,nj объединяет строки с m по n в одну jp Объединить текущую строку со следующей и печатать -,.jp Объединить предыдущую строку с текущей и печататьПо умолчанию принимается диапазон .,.+1;
Строки можно расщепить командой подстановки, отделив новую строку:
s/part1part2/part1part2/ Расщепить строку на две части s/ / /g Расщепить по каждому пробелу. Оставить одно слово на строкуТекущей становится последняя созданная строка.
Чтобы манипулировать не только целыми фрагментами, выбираемыми регулярными выражениями, но и их соответствующими частями, используйте помеченные регулярные выражения: если конструкция (...) появляется в регулярном выражении, то часть соответствующего ей фрагмента доступна как 1. Возможно до девяти помеченных выражений, на которые ссылаются с помощью 1, 2 и т.д.
s/(...)(.*)/21/ Поместить 3 первых символа в конец /(..*)1/ Найти строки, содержащие повторяющиеся смежные цепочки символов Команды, работающие с файламиКомандам r и w (читать и писать) могут предшествовать номера строк:
nr file Читать file; добавить его после строки n; текущей становится последняя прочитанная строка m,nw file Писать строки m-n в file; положение текущей строки не изменяется m,nw file Добавить строки m-n к file; положение текущей строки не изменяетсяПо умолчанию диапазон для w и W (команда W приведена ниже в табл. П.1.2) — это целый файл. Значение n по умолчанию для r равно $, что представляется не очень удачным. Будьте внимательны.
Редактор ed запоминает первое использованное имя файла из командной строки или из команд r, w. Команда f (файл) печатает или заменяет имя запомненного файла:
f Печатать имя запомненного файла f file Установить запомненное имя на 'file'Команда e (редактировать) вновь вызывает ed с запомненным или новым файлом:
e Начать редактировать запомненный файл e file Начать редактировать 'file'Команда е защищена тем же способом, что и q: если вы не записали измененную версию, первая команда е выдает сообщение об ошибке; е вновь инициализирует редактор независимо от внесения изменений. В некоторых системах ed связан с е, так что одна и та же команда (е filename) может использоваться внутри и вне редактора.
ШифрованиеФайлы могут быть зашифрованы по записи и дешифрованы при чтении с помощью команды x; пароль будет запрошен. Шифрование происходит тем же способом, что и в crypt(1). В некоторых системах команда x заменена на X (прописную букву) во избежание случайностей.
Сводка командВ табл. П.1.2 перечислены команды редактора, а в табл. П.1.3 допустимые номера строк. Каждой команде предшествует нуль, один или два номера строк, указывающие число используемых строк, если их нет, принимается соглашение по умолчанию. За большинством команд может следовать буква p для вывода последней обработанной строки или 1 для формата списка. Текущей обычно становится последняя обработанная строка; настройка не меняется командами f, k, w, x, =, !.
.а Выполнять ввод до тех пор, пока не напечатана строка, содержащая только '.' .,.с Заменить строки, новый текст заканчивается так же, как для команды а .,.d Исключить строки е file Вновь начать редактировать file. Редактирование начинается даже в том случае, если исправления не записаны f file Запомнить имя файла как file 1,$g/re/cmds Выполнить cmds для каждой строки, соответствующей регулярному выражению re; отдельные команды в cmds разделены newline (+"перевод строки") .i Вставить текст перед строкой; он заканчивается так же, как для команды a .,.+1j .Соединить строки в одну .kc Пометить строку буквой с ...l Перечислить строки, делая невидимые символы видимыми .,.m line Переместить строки после строки line .,.p Печатать строки q Выйти. Q выходит, даже если исправления не записаны $r file Читать file .,.s/re/new/ Заменить new на то, что соответствует re .,.t line Скопировать строки после line .u Аннулировать последнюю подстановку в строке (только одну) 1,$v/re/cmds Выполнить команды ed cmds для каждой строки, не соответствующей re 1,$w file Записать строки в файл; W добавляет (строки к файлу) вместо того чтобы записывать (как новый файл) X Войти в режим шифрования (или ed -х имя_файла) $= Печатать номер строки ! cmdline Выполнить команду UNIX cmdline (.+1) newline Печатать строкуТаблица П.1.2: Сводка команд ed
n Абсолютный номер строки n, n = 0,1, 2,... . Текущая строка $ Последняя строка текста /re/ Следующая строка, соответствующая re; после последней $ циклическое движение к первой строке ?re? Предыдущая строка, соответствующая re; после первой циклическое движение к последней $ 'c Строка с меткой с N1+/-n Строка N1+/-n (аддитивная комбинация) N1,N2 Строки с N1 по N2 N1;N2 Команда: сделать строку N1 текущей, затем вычислить N2. N1 и N2 могут быть определены любым из перечисленных выше способовТаблица П.1.3: Номера строк в ed
УпражнениеЕсли вы думаете, что знаете ed, попробуйте выполнить текст (см. справочное руководство по quiz(6)).