Шрифт:
В процедурной части шаблона end осуществляется вывод итоговых результатов.
$ belts.awk grade_student.txt
The club has 2 Red belts
The club has 2 Orange belts
The club has 3 Yellow belts
The club has 7 Senior students
The club has 8 Junior students
9.3. Заключение
Язык программирования awk может показаться сложным для изучения, но если осваивать его на примерах употребления отдельных команд и небольших сценариев, то процесс обучения не будет слишком трудным. В данной главе мы изучили основы awk, не углубляясь в детали, но, тем не менее, получили необходимый минимум сведений, относящихся к этому языку. Утилита awk является важным инструментом shell–программирования, и чтобы применять ее, вам не обязательно быть экспертом по языку awk.
ГЛАВА 10
Работа с редактором sed
Редактор sed относится к текстовым редакторам потокового типа и не является интерактивной программой. Он предназначен для обработки текстовых данных, поступающих из файла или стандартного входного потока. Отличительной особенностью редактора sed является то, что он позволяет модифицировать файлы в фоновом режиме. Задача пользователя сводится к тому, чтобы задать последовательность команд редактирования, а всю остальную работу выполнит сам редактор. Кроме того, sed допускает внесение всех изменений за один проход, а это превращает его в достаточно эффективный и, что важнее всего, быстродействующий инструмент редактирования текста.
В этой главе рассматриваются следующие темы:
• синтаксис команд sed;
• поиск строк по номерам и с использованием регулярных выражений;
• изменение входного текста и добавление текста в выходной поток;
• примеры команд и сценариев sed.
Команды sed вводятся в командной строке либо размещаются в файле сценария подобно тому, как это делается в случае с утилитой awk. При использовании sed важно помнить следующее: этот редактор оставляет без изменения исходный файл независимо от того, какая команда выполняется. Копия входного потока помещается в буфер редактирования, а все изменения направляются на экран или переадресуются в выходной файл.
Поскольку редактор sed не предназначен для работы в интерактивном режиме, текстовые строки, подлежащие изменению, отбираются либо по номерам, либо на основании соответствия регулярному выражению.
10.1. Чтение и обработка данных в sed
Общая схема работы редактора sed такова:
1. Редактор последовательно извлекает строки текста из файла или стандартного входного потока и копирует их в буфер редактирования.
2. Затем он считывает первую команду из командной строки или сценария, осуществляет поиск строки с указанным номером или строки, соответствующей шаблону, и применяет к ней эту команду.
3. Второй пункт повторяется до тех пор, пока не будет исчерпан список команд.
10.2. Вызов редактора sed
Вызвать редактор sed можно тремя способами:
1. Ввести набор команд sed в командной строке.
2. Поместить набор команд sed в файл и передать его редактору sed в командной строке.
3. Поместить набор команд sed в файл сценария и сделать его выполняемым. Если редактор sed вызывается для выполнения одиночных команд, формат
командной строки будет таким:
sed [опции] 'команды' входной_файл
Как и в awk, не забудьте заключить команды в одинарные кавычки, чтобы защитить от интерпретации находящиеся в них специальные символы.
Если команды sed помещены в отдельный файл, командная строка примет следующий вид:
sed [опции] — f файл_сценария входной_файл
Если файл сценария является исполняемым, запустить его на выполнение следует таким образом:
файл_сценария [опции] входной_файл
Когда входной файл не указан, sed будет ожидать поступления данных из стандартного входного потока: с клавиатуры или из канала.
Ниже перечислены основные опции редактора sed и описано их назначение:
– n Запрет вывода на экран. При наличии этой опции редактор sed не будет записывать обрабатываемые им строки в стандартный выходной поток, тогда как по умолчанию отображается каждая входная строка. Осуществить вывод нужной строки можно будет только с помощью команды p (рассматривается ниже).
– e Следующей командой будет команда редактирования. Эта опция используется в том случае, когда команд редактирования несколько. Если же имеется только одна такая команда, то указывать данную опцию не нужно, хотя ее наличие и не является ошибкой.
– f Эта опция используется при подключении файла сценария.
10.2.1. Сохранение выходных данных
Если требуется сохранить проделанные изменения, просто перенаправьте результаты работы редактора sed в файл, как показано ниже: