(манипулирование файлами данных, выборка и обработка текста ) Преподаватель: Петриков Владимир Дмитриевич AWK (GAWK) 2.

Презентация:



Advertisements
Похожие презентации
(манипулирование файлами данных, выборка и обработка текста ) Преподаватель: Петриков Владимир Дмитриевич AWK (GAWK)
Advertisements

(манипулирование файлами данных, выборка и обработка текста ) Преподаватель: Петриков Владимир Дмитриевич AWK (GAWK) 3.
JavaScript Регулярные выражения Введение Создание регулярных выражений Флаги (способы поиска по шаблону) Метасимволы Специальные символы Квантификаторы.
turbo.exe основной файл среды Любой язык обладает алфавитом, синтаксисом и семантикой. В алфавит входит набор символов, использующихся в языке с помощью.
Алфавит и синтаксис языка программирования Visual Basic.
Чтобы писать программы в среде программирования необходимо изучить его знаковую систему.
©ρŧą Базовые конструкции языка.
Лекция 2 Функции библиотек языка C. stdio.h Заголовочный файл стандартной библиотеки языка C. Содержит определения констант, объявления функций и типов.
Символы и строки. Процедуры и функции работы со строками.
ОБЩИЕ СВЕДЕНИЯ О ЯЗЫКЕ ПРОГРАММИРОВАНИЯ ПАСКАЛЬ НАЧАЛА ПРОГРАММИРОВАНИЯ.
Простые типы данных на языке программирования Turbo Pascal.
Лекция 4 Программирование на Паскале. Элементы языка Турбо Паскаль 7.0. Типы данных. Управляющие конструкции.
Понятие строки. Операции со строковыми величинами. Стандартные процедуры и функции обработки строковых величин. Простые алгоритмы работы со строками на.
Переменные и операторы УРОК 2. Переменные ПЕРЕМЕННАЯ – ?... контейнер для хранения данных. Переменная имеет имя – это….? последовательность букв, цифр.
Переменные задаются именами, которые определяют области памяти, в которых хранятся их значения. Значениями переменных могут быть данные различных типов.
Строки в Pascal
РНР Изучение языка. Программирование интерактивных WEB-сайтов на языке PHP.
Операции Условная операция ? : Если истинно, то результатом будет, иначе. Например, int x = a < b ? a : b вычисляет минимум из a и b.
Оператор присваивания. Арифметические выражения. Типы данных. Продолжаем изучать основы Turbo Pascal.
О СНОВЫ АЛГОРИТМИЗАЦИИ И ПРОГРАММИРОВАНИЯ. П ЛАН 1. Символьные и строковые величины. Операции над символьными и строковыми величинами. 2. Символьный тип.
Транксрипт:

(манипулирование файлами данных, выборка и обработка текста ) Преподаватель: Петриков Владимир Дмитриевич AWK (GAWK) 2

метасимволы (шаблоны) ^ $ [ ] - + *.(точка) \ ^ -- соответствует началу строки /^A/ - строки, начинающиеся на A $4 ~ /^Иванов/ $ -- соответствует концу строки. /A$/ отвечает строкам, заканчивающимся на A. $4 ~ /вна$/ шаблон Регулярное выражение /Иванов/ "^$" соответствует пустой строке.

[ ] -- множество единичных символов [AWK] соответствует множеству из трех букв A, W, K G[AWK] представляет множество строк { GA, GW, GK } - -- задаёт диапазон символов [a-z] соответствует символам от a до z, {a b c d … y z} $4 ~ /^[А-С]/ не POSIX – нет переносимости (в Gawk-е не работает) шаблон

+ -- предыдущий символ присутствует в образце многократно ( не менее одного раза) [1-9] целые числа, делящиеся на 100 { … …} * -- предыдущий символ присутствует в образце ноль или много раз [1-9][0-9]* -- положительные целые числа. {1 2 … 10 …100 …} [1-9]00* -- целые числа, делящиеся на 10 {10 20 … …} ? -- предыдущий символ присутствует в образце ноль или 1 раз [1-9][0-9]* -- положительные целые числа до 99 {1 2 … 10 …99} шаблон

. (точка) -- произвольный единичный символ.* - обозначает произвольную комбинацию символов. "13." _ 13\n 13 \ -- отменяет специальное значение последующего символа. \$ - это символ $ \/ - это символ / шаблон

Управляющие последовательности для символов ASCII с кодами \a 0x07 BEL Звуковой сигналBell \b 0x08 BS ЗабойBack Space \f 0x0C FF Перевод бланкаForm Feed \n 0x0A LF Новая строка (перевод строки) (new line) Line Feed \r 0x0D CR Возврат каретки Caridge Return \t 0x09 HT Табуляция (горизонтальная) \v 0x0B VT Вертикальная табуляция

\\ 0x5c \ Обратная наклонная черта \/ / Прямая наклонная черта \' 0x27 ' Одинарная кавычка (апостроф) \" 0x22 " Двойная кавычка \? 0x3F ? Вопросительный знак Символы, используемые в разных «шаблонах» printf("Hello Word !!! \n"); как напечатать \ ? \ddd строка до трех восьмеричных цифр ( ) \xdd строка шестнадцатеричных цифр (0 - FF) Универсальный способ

ВыражениеДействие \сСимвол "с" ^Начало строки $Конец строки.Любой символ [s]Любой символ из набора "s" [^s]Любой символ, не входящий в набор "s" r*Ноль или больше r+Один или больше r?Ноль или один (r)r, группировка, при конкатенации строк r1|r2r1 или r2

[:alnum:] -- алфавитные символы и цифры = [A-Za-z0-9] для USA [:alpha:] -- символы алфавита = [A-Za-z] [:blank:] -- символы пробела и табуляции [:cntrl:] -- управляющие символы (control characters). [:punct:] -- символы пунктуации [:digit:] -- символы десятичных цифр = [0-9] [:xdigit:] -- символы шестнадцатиричных цифр = [0-9A-Fa-f] [:graph:] (печатаемые и псевдографические (видимые) символы) – без пробела. [:print:] (печатаемые символы) + символ пробела [:space:] -- пробельные символы (такие как пробел и TAB, FF) [:lower:] -- алфавитные символы в нижнем регистре = [a-z] [:upper:] -- символы алфавита в верхнем регистре = [A-Z] символьные классы POSIX / [ класс ] / в двойные квадратные скобки / [[:alnum:]] / Классы символов POSIX - для разных стран!

Область шаблона pat1, pat2 {...} /Canada/, /Brazil/ China Asia Canada North America USA North America Brazil South America от до

BEGIN и END BEGIN END Программа Входной файл выполняется 1 раз выполняется 1 раз выполняется много раз BEGIN { printf СТАРТ\n } /Иванов/ END { printf \nФИНИШ}'

BEGIN { printf "СТАРТ\n\n"} /Иванов/ {n = n+1} END { printf " %d \n", n printf "\n\nФИНИШ"} подсчет строк с /Иванов/ BEGIN { printf "СТАРТ\n\n } BEGIN { printf "СТАРТ\n\n } WIN

Действие предложения, разделенные ; или \n (новая строка) Вывод (Печать) Присваивание n = 1 Управляющая структура Встроенная функция

действие Вывод (Печать) print - выводится вся запись + \n print $0 print $1, $2 - значения полей выводятся через пробел print $1 abc - выводится конкатенация значений полей print – выводится пустая строка формат вывода – по умолчанию

действие форматированный вывод printf format, item1, item2,... функция sprintf (format, item1, item2,...)

Управляющие операторы if (условие) оператор [ else оператор] while (условие) оператор do оператор while (условие) for (выражение1; выражение2; выражение3) оператор for (переменная in массив) оператор break continue delete массив[индекс] delete массив exit [ выражение ] { операторы } действие

if (если) if( условие ) действие if( условие ) действие else действие Анализ условия на истинность, == 0 if (x % 2 == 0) print "x is even" else print "x is odd" действие

while (пока) while (условие ) действие выполнение действия пока значение условия != 0 проверка перед каждым выполнением { i = 1 while( i

do (делай ) do действие while ( условие ) { i = 1 do { print $0 i++ } while (i

for (для) for ( инициализация ; условие ; приращение) действие for (i = 1; i

for (для) for (переменная in массив) действие # Пишем 1 для каждого встречного слова { for (i = 1; i 10) { num = num +1 } print num, "words longer than 10 characters" } действие

break (прерывание) – «досрочный» выход из цикла break continue (продолжение) – новая итерация - выполнение нового цикла continue - для do, while, for действие

Типы переменных и их преобразование Переменные - числа с плавающей запятой строки или и то, и другое одновременно Тип переменной зависит от контекста. В числовых выражениях переменная - число, в строковых - строка. целые значения всегда преобразуются как целые a = 12 b = a "" print a, b print a + b b= a "stroka" print a, b print a + b b= "stroka"a # b=0 print a, b print a + b По умолчанию число = 0 строка = "" (пустая строка). pr6.bat stroka stroka12 12

Операции = простое присваивание (переменная = значение) + сложение - вычитание * умножение / деление - для вещественных чисел % модуль (остаток при целочисленном делении) ^ возведение в степень ( ** ) арифметические -x унарный минус, отрицание +x унарный плюс; выражение преобразуется в число x = y = z = 5 как в Си

+= увеличить на -= *= /= %= ^= возведение в степень и присваивание ++ инкремент n++ - n = n+1 -- декремент n-- - n = n-1 могут быть префиксными и постфиксными сложные виды присваивания (операция и присваивание)

Условная Операция условие ? if-true-exp1 : if-false-exp2 x >= 0 ? x : -x берём положительное значение x if(условие) exp1 else exp2

b = 6 print b += b++ или b = 6 b += ++b + b++ print b Побочные эффекты не надо так писать!!!

Встроенные арифметические функции Функция Возвращаемое значение exp(x) Экспоненциальная функция x log(x) Натуральный логарифм x sqrt(x) Квадрат x int(x) Целая часть x с усеченными лидирующими нулями sin(x) Синус x cos(x) Косинус x atan2(y,x) Арктангенс y/x в пределах от "-пи" до "пи" rand() псевдо - Случайное число между 0 и 1 [0 1) srand(x) x - новое начальное значение для послед. rand( ) Если srand() не имеет аргументов, то начальное значение производится из времени дня.

Встроенные строковые функции awk ФункцияОписание length( [ s ] )Возвращает длину s ( или $0 ) sprintf( fmt, expr-list )Возвращает expr-list, отформатированный в соответствии с форматом строки fmt (без печати) index( s, t ) Возвращает позицию подстроки t в s : 0 - если t нет в s split( s, a ) Разделяет s на массив a по FS; a[1], a[2], … возвращает число полей split( s, a, razdelit ) Разделяет s на массив a по razdelit ; возвращает число полей

length(arg) - Функция длины arg. length- длина текущей строки substr(s,m,n) - Возвращает подстроку строки s, начиная с позиции m, всего n символов. index(s,t) - Возвращает начальную позицию подстроки t в строке s. (Или 0, если t в s не содержится.) sprintf(fmt,exp1,exp2,...) - Осуществляет форматированную печать (вывод) в строку, идентично PRINTF. split(s,array,sep) - Помещает поля строки s в массив array и возвращает число заполненных элементов массива. Если указан sep, то при анализе строки он понимается как разделитель. Строковые функции

Встроенные строковые функции awk ФункцияОписание sub(regexp, replacement_str) Замещает первое regexp в текущей записи на replacement_str, возвращает количество замен sub( reg, s, t )Заменяет первое reg на s в строке t, возвращает количество замен substr( s, p )Возвращает подстроку s, начиная с позиции p substr( s, p, n )Возвращает подстроку s, начиная с позиции p длиной n gsub( reg, s )Глобальная замена reg на s в текущей записи; возвращает количество замененных символов gsub(reg, s, t )Глобальная замена reg на s в строке t, возвращает количество замененных символов gensub( reg, s, how [, target ] ) s – не меняется! Возвращается копия $0 [target] с заменами, how должно быть - g | | G | | номер совпадения с reg, для замены

ФункцияОписание match(string, regexp) Возвращает индекс string, где встречается regexp; 0 - если regexp не встретилось strtonum(string) возврат числового значения (dec, oct, hex) ( ~ 0 + str для dec) tolower(string) возвращает string, преобразованную в нижний регистр toupper(string) возвращает string, преобразованную в верхний регистр Встроенные строковые функции awk

asort(source [, dest]) - сортировка asort(a) a[1] = "cul" a[2] = "de" a[3] = "sac" a["last"] = "de" a["first"] = "sac" a["middle"] = "cul" n = asort( a, b ) a["last"] = "de" a["first"] = "sac" a["middle"] = "cul" b[1] = "cul" b[2] = "de" b[3] = "sac"