Чтение онлайн

на главную - закладки

Жанры

Прикладные свободные программы и системы в школе
Шрифт:

Однако в качестве интегрированной среды именно для программирования (в том числе, на обычно изучаемых в школе директивных языках, например, Pascal) «Emacs» использовать, безусловно, можно. Следует только учесть, что пресловутая «кривая обучения» для него гораздо более вогнутая, чем для более простых (но и менее мощных) средств редактирования, обычно используемых в подобного рода средах. Грубо говоря, может потребоваться пара занятий до того, как учащийся будет чувствовать себя уверенно при наборе и редактировании программ, зато потом эти задачи будут решаться гораздо эффективнее. (Кривую обучения можно сгладить,

создав дополнительный набор макрокоманд под конкретный курс и, наверное, это правильный способ, но он потребует от методиста незаурядного знания не только «Emacs», но и «Emacs Lisp».)

В обычных учебных курсах «vi» изучается раньше «Emacs». Такая структура заимствуется из традиционного курса подготовки администраторов и продвинутых пользователей открытых систем. Дело в том, что «vi», во-первых, стандартизован (и доступен во всех без исключения открытых системах), а во-вторых, компактен. Администратор системы может оказаться (например, при восстановлении после сбоя) в среде, где ему из экранных редакторов доступен только «vi». Поэтому для сисадминов базовые навыки работы с ним обязательны (вне зависимости от личных предпочтений).

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

Редактирование «без редакторов»

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

Рис. 1-71

Допустим, в файле note сохранен текст записки:

В мае 2001 г. в Кремле состоится встреча с ветеранами Великой отечественной войны.

Откроет встречу Президент Российской Федерации Борис Ельцин.

Если ситуация изменилась (и мы отдаем себе отчет, как именно), можно открыть файл с этим текстом в текстовом редакторе, например, vi (Рис. 1), и издать команду:

:s/Борис Ельцин/Владимир Путин/g

Текст (предсказуемо) приобретет вид:

В мае 2001 г. в Кремле состоится встреча с ветеранами Великой отечественной войны.

Откроет встречу Президент Российской Федерации Владимир Путин.

Однако, то же самое действие можно выполнить и «без редактора», а точнее, без интерактивного редактора, с помощью редактора потокового. Стандартный потоковый редактор называется sed, и синтакис его команд схож с синтаксисом командного режима стандартного интерактивного редактора vi, команда при этом издается непосредственно из командной строки:

$sed -n 's/Борис Ельцин/Владимир Путин/g' note

Если у нас подготовлен не один файл, а множество (например, note.1, note.2, note.3), и нужно внести

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

$sed -n 's/Ельцин/Березовский/g' note.*

Если файлов будет тысяча, а требуемые изменения будут посложнее, нам, скорее всего, понадобится опять-таки всего одна команда (хотя, возможно, и потребуется серьезное изучение синтаксиса). Это называется потоковым редактированием, и оно интенсивно применяется, например, для наложения «заплаток» на исходные тексты программ (однако, как было продемонстрировано, с успехом может использоваться и для обработки текста на естественном языке).

Автоматизированная обработка текстов

ОС «Юникс» была во многом «рождена для обработки текстов» (прежде всего, это была система для программистов, а программы – это тексты). Набор служебных программ (утилит) современных стандартных ОС продолжает эту традицию, и в их составе можно найти десятки программ, ориентированных на работу с текстом. Многие из них (но не все) являются построчно-ориентированными, то есть текст понимается как последовательность строк.

Команда «grep» выводит строки, содержащие заданную подстроку, команда «sort» сортирует строки по алфавиту, «uniq» удаляет неуникальные (дублирующиеся) строки, «split» разделяет файлы, «cat» соединяет и т.п. Подробное описание команд потоковой обработки текста может занять отдельную толстую книгу.

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

Базовые регулярные выражения

Многими стандартными утилитами (такими как «sed», «grep», «vi») для поиска, замены, выбора текста, используются базовые регулярные выражения.

Регулярное выражение – это последовательность символов. При использовании (передаче в качестве аргумента программе или вводе в ходе сеанса редактирования) регулярное выражение (шаблон) обычно [60] окружается ограничителями – двумя одинаковыми символами, обозначающими его начало и конец, но не являющимися частью самого выражения. За исключением особых случаев в качестве ограничителей принято брать прямую косую черту (/, слэш), она окружает выражения и во всех нижеприведенных примерах.

60

Исключением являются утилиты семейства «grep».

Сами же символы могут (в зависимости от значения и, иногда, положения) иметь прямое (буквальное) значение или специальное. Символ-ограничитель не может употребляться внутри выражения в буквальном значении; также не рекомендуется использовать в этом качестве любой из перечисленных ниже специальных символов.

В буквальном значении символ автонимен, т.е. обозначает сам себя. /а/ обозначает букву «а», /слово/ означает слово «слово».

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

Поделиться:
Популярные книги

Белые погоны

Лисина Александра
3. Гибрид
Фантастика:
фэнтези
попаданцы
технофэнтези
аниме
5.00
рейтинг книги
Белые погоны

На границе империй. Том 7

INDIGO
7. Фортуна дама переменчивая
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
6.75
рейтинг книги
На границе империй. Том 7

Возмездие

Злобин Михаил
4. О чем молчат могилы
Фантастика:
фэнтези
7.47
рейтинг книги
Возмездие

Скандальный развод, или Хозяйка владений "Драконье сердце"

Милославская Анастасия
Фантастика:
попаданцы
фэнтези
5.00
рейтинг книги
Скандальный развод, или Хозяйка владений Драконье сердце

Мужчина не моей мечты

Ардова Алиса
1. Мужчина не моей мечты
Любовные романы:
любовно-фантастические романы
8.30
рейтинг книги
Мужчина не моей мечты

Золушка по имени Грейс

Ром Полина
Фантастика:
фэнтези
8.63
рейтинг книги
Золушка по имени Грейс

Невеста

Вудворт Франциска
Любовные романы:
любовно-фантастические романы
эро литература
8.54
рейтинг книги
Невеста

Его огонь горит для меня. Том 2

Муратова Ульяна
2. Мир Карастели
Фантастика:
юмористическая фантастика
5.40
рейтинг книги
Его огонь горит для меня. Том 2

Корсар

Русич Антон
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
6.29
рейтинг книги
Корсар

Имя нам Легион. Том 9

Дорничев Дмитрий
9. Меж двух миров
Фантастика:
боевая фантастика
рпг
аниме
5.00
рейтинг книги
Имя нам Легион. Том 9

Дыхание Ивента

Мантикор Артемис
7. Покоривший СТЕНУ
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Дыхание Ивента

Мне нужна жена

Юнина Наталья
Любовные романы:
современные любовные романы
6.88
рейтинг книги
Мне нужна жена

Имя нам Легион. Том 7

Дорничев Дмитрий
7. Меж двух миров
Фантастика:
боевая фантастика
рпг
аниме
5.00
рейтинг книги
Имя нам Легион. Том 7

Убивать, чтобы жить

Бор Жорж
1. УЧЖ
Фантастика:
героическая фантастика
боевая фантастика
рпг
5.00
рейтинг книги
Убивать, чтобы жить