русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Шаблоны BEGIN и END


Дата добавления: 2013-12-23; просмотров: 763; Нарушение авторских прав


Шаблоны

Сообщения об ошибках

Примеры некоторых полезных программ

Функции

Встроенные функции awk управляют арифметикой и операциями над строками. Например, функция string заменяет одну строку на другую. awk также позволяет вам определить собственные функции

awk может использоваться для написания больших программ некоторой сложности. В нее могут входить некоторые короткие программы, которые для вас являются полезными и поучительными. Приведем некоторые из них.

Напечатать последнее поле каждой вводной строки:

{print $NF}

Напечатать 10-ю вводную строку:

NF == 10

Напечатать последнюю вводную строку:

{line = $0} END {print line}

Напечатать строки, которые не имеют 4-го поля:

NF != 4 {print $0, "не имеют 4-го поля" }

Напечатать вводные строки, которые имеют более 4-х полей:

NF > 4

Напечатать последние поля вводных строк, начиная с 5-го:

$NF > 4

Напечатать общее число вводных строк:

END {print NR}

Напечатать обшее число полей:

{nf = nf+NF} END {print nf}

Напечатать общее число символов вводного файла:

{nc = nc + length($0)} END {print nc + NR}

Напечатать общее число строк, которые содержат строку "Asia":

/Asia/ {nlines++} END {print nlines}

(nlines++ имеет тот же эффект, что и nlines = nlines+1).

Если вы сделаете ошибку в программе awk, то получите сообщение об ошибке. Например, если вы попытаетесь запустить программу:

$3 < 200 { print ($1}

то получите сообщение об ошибке:

awk: syntax error at source line 1 contex is $3 < 200 {print >>>$1}<<< awk: illegal statement at source line 1 1 extra (

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



В выражении шаблон-действие, шаблон служит для выбора записей, для которых выполняется соответствующее действие.

BEGIN используется для получения управления перед считыванием первой вводной строки, так что любое действие для шаблона BEGIN выполняется один раз до того, как команда awk начинает считывать первую запись. END используется для получения управления после считывания последней вводной строки.

Следующая awk-программа использует BEGIN для установки в качестве разделителя символа табуляции (\t) и создания заголовков в выводном файле. Поле-разделитель хранится во встроенной переменной FS. Хотя FS может быть восстановлено в любом месте, благоразумнее поместить в секции BEGIN, до того как вводной файл начнет считываться. Второй printf в программе выполняется для каждой вводной строки и формирует выводной файл в виде таблицы, где вся информация располагается по колонкам с заголовками. END печатает результат. (Обратите внимание, что длинная строка может быть продолжена на другой строке после запятой).

BEGIN { FS = "\t" printf "%10s %6s %5s %s\n", "COUNTRY", "AREA", "POP", "CONTINENT" } printf "%10s %6s %5s %s\n", $1, $2, $3, $4 area = area + $2; pop = pop + $3} END {printf "\n%10s %6d %5d\n", "TOTAL", area, pop }

Если в качестве вводного взять файл countries, то получим следующий результат:

COUNTRY AREA POP CONTINENT USSR 8650 262 Asia Canada 3852 24 North America China 3692 866 Asia USA 3615 219 North America Brazil 3286 116 South America Australia 2968 14 Australia India 1269 637 Asia Argentina 1072 26 South America Sudan 968 19 Africa Algeria 920 18 Africa TOTAL 30292 2201


<== предыдущая лекция | следующая лекция ==>
Определенные пользователем переменные | Регулярные выражения


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.