Без темы
<<  Awk Axial and Appendicular Skeleton  >>
AWK (GAWK)
AWK (GAWK)
Инструмент прикладного программиста: строковый процессор AWK
Инструмент прикладного программиста: строковый процессор AWK
Пример 1
Пример 1
Значительная обычная доля работы программиста - преобразовании
Значительная обычная доля работы программиста - преобразовании
Пример 2
Пример 2
Почти C
Почти C
Бонус
Бонус
Запуск awk-программы
Запуск awk-программы
Технология выполнения заданий
Технология выполнения заданий
Файл
Файл
Работа awk
Работа awk
Структура awk-файла
Структура awk-файла
Шаблон { действие }
Шаблон { действие }
Общее в AWK
Общее в AWK
Образец (шаблон)
Образец (шаблон)
Действие
Действие
AWK (GAWK)
AWK (GAWK)
Комментарии
Комментарии
Поля
Поля
Поля
Поля
Переменные
Переменные
Поля как переменные
Поля как переменные
Массивы
Массивы
Арифметические выражения
Арифметические выражения
AWK (GAWK)
AWK (GAWK)
Образец (шаблон)
Образец (шаблон)
Регулярное выражение
Регулярное выражение
ИСТИНА и ЛОЖЬ в AWK
ИСТИНА и ЛОЖЬ в AWK
Выражение отношения
Выражение отношения
&& Логическое И || Логическое ИЛИ
&& Логическое И || Логическое ИЛИ
BEGIN и END
BEGIN и END
Метасимволы (шаблоны)
Метасимволы (шаблоны)
[ ] -- множество единичных символов [AWK] соответствует множеству из
[ ] -- множество единичных символов [AWK] соответствует множеству из
+ -- Многократное ( не менее одного) повторение в образце символа,
+ -- Многократное ( не менее одного) повторение в образце символа,
.(Точка) -- произвольный единичный символ
.(Точка) -- произвольный единичный символ
Управляющие последовательности
Управляющие последовательности
Символы, используемые в разных «шаблонах»
Символы, используемые в разных «шаблонах»
AWK (GAWK)
AWK (GAWK)
Действие
Действие
Вывод (Печать)
Вывод (Печать)
printf format, item1, item2,
printf format, item1, item2,
Управляющие операторы
Управляющие операторы
If (если)
If (если)
While (пока)
While (пока)
Do (делай )
Do (делай )
For (для)
For (для)
For (для)
For (для)
break
break
Встроенные функции
Встроенные функции
Строковые функции
Строковые функции
sprintf(fmt,exp1,exp2,
sprintf(fmt,exp1,exp2,
AWK (GAWK)
AWK (GAWK)
AWK (GAWK)
AWK (GAWK)

Презентация: «AWK (GAWK). (Манипулирование файлами данных, выборка и обработка текста )». Автор: Petrikov_Vladimir. Файл: «AWK (GAWK). (Манипулирование файлами данных, выборка и обработка текста ).ppt». Размер zip-архива: 51 КБ.

AWK (GAWK). (Манипулирование файлами данных, выборка и обработка текста )

содержание презентации «AWK (GAWK). (Манипулирование файлами данных, выборка и обработка текста ).ppt»
СлайдТекст
1 AWK (GAWK)

AWK (GAWK)

(Манипулирование файлами данных, выборка и обработка текста )

Преподаватель: Петриков Владимир Дмитриевич

2 Инструмент прикладного программиста: строковый процессор AWK

Инструмент прикладного программиста: строковый процессор AWK

The AWK programming language, авторы aho, weinberger и kernighan известны, как родоначальники языка C и операционной системы UNIX.

Gawk - это GNU реализация AWK mawk, … - новый AWK

много реализаций - разные ОС: UNIX, WIN, MAC

3 Пример 1

Пример 1

Разбор файлов задачного сервера 2006 -2008. Имеется Набор каталогов со сданными решениями и набор файлов с протоколами результатов Необходимы файлы – по именам студентов по номерам задач

4 Значительная обычная доля работы программиста - преобразовании

Значительная обычная доля работы программиста - преобразовании

текстовых файлов: выделении из них определенных частей, преобразовании одних строк в другие, дописывании какой-либо информации, простейшие вычисления с данными, извлекаемыми из этих файлов и т.д., и т.п. Трудоемкость - тысячи строк текста Неунифицируемость - информация не структурирована Для эффективной работы в этой ''серой'' области давно предложен и с успехом применяется строковый процессор awk.

5 Пример 2

Пример 2

Преобразование Списка для разных задач.

6 Почти C

Почти C

Для своих действий awk предоставляет в распоряжение программиста развитый язык программирования, напоминающий популярный язык программирования C.

Входной язык процессора awk является в определенном смысле ''упрощенным'' C , предоставляя удобный операционный синтаксис для строковых операций, автоматическое преобразование строка-число, автоматический лексический разбор входного потока и т.п.

7 Бонус

Бонус

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

8 Запуск awk-программы

Запуск awk-программы

Если программа короткая, проще всего включить ее в команду выполнения awk: Linux: awk 'program' input-file1 input-file2 ... WIN: gawk “program” input-file1 input-file2 ... Если программа длинная, обычно удобнее записать ее в файл : gawk -f program-file input-file1 input-file2 ...

Нет input-file1

Ввод со стандартного устройства ввода ( win: клавиатура , CTRL-Z )

9 Технология выполнения заданий

Технология выполнения заданий

ОС: windows

Файловый менеджер: Total Commander

Задание : в отдельном каталоге

Набор файлов:

Zapusk.bat gawk -f p2.awk spisok.txt > new.txt

Запуск примера из командного окна текущего каталога: набрать в TotalCommander внизу - cmd Запуск: >zapusk

Редактируем файл p2.awk

10 Файл

Файл

- Именованная последовательность логических записей, хранящихся на внешнем носителе.

Предыдущая запись

Следующая запись (RECORD)

Запись конца файла

Текущая позиция

Запись - набор знаков, значений; читается или записывается целиком.

11 Работа awk

Работа awk

AWK рассматривает входной поток данных : это записи (строки), разделенные специальными символами (RS - RecordSeparator) - переход на новую строку ('\n'). Запись (строка) считается разделенной на поля специальными символами (FS - FieldSeparator) - по умолчанию - символ пробела Строка <= 256 символов.

$0

\n

Пробел

12 Структура awk-файла

Структура awk-файла

Программа на языке awk состоит из пар: образец действие. (шаблон действие) Каждая запись проверяется встроенным механизмом awk на соответствие заданному образцу и если текущая запись соответствует этому образцу, выполняется действие. , т.е. интерпретация входной информации идёт построчно

…………. Входной Файл ………….

Программа

см. Пример 3 - запуск из файла

Выполняется много раз

13 Шаблон { действие }

Шаблон { действие }

Шаблон

{ Действие }

Шаблон { print }

/Иванов/

{ if( $0 ~ /Иванов/ ) print $0 }

Действие выполняется для каждой записи

Вывод всей записи для каждого шаблона

Чего-то нет

Сравним примеры 3 и 3а

14 Общее в AWK

Общее в AWK

Образец {действие}

-- Поля (см.выше) для входных записей -- Переменные (стандартные, Массивы) -- Арифметические выражения

Допускается использование в

15 Образец (шаблон)

Образец (шаблон)

-- Регулярное выражение -- Выражение отношения -- Комбинация образцов -- BEGIN и END

16 Действие

Действие

Предложения, разделенные ; или \n (новая строка)

Вывод (Печать) Присваивание Управляющая структура Встроенная функция

17 AWK (GAWK)
18 Комментарии

Комментарии

- Начинаются с символа ``#'' и продолжаются до конца строки.

# Print list of word frequencies { for (i = 1; i <= NF; i++) freq[$i]++ # массив слов } END { for (word in freq) printf "%s\t%d\n", word, freq[word] }

Общее в awk

pr4 pr4a

19 Поля

Поля

строка ВВОДА состоит из полей

строка: Первоеполе Второеполе ……… $0 $1 $2 …. $100 $101

Ссылается на всю строку целиком

Запись (строка) считается разделенной на поля специальными символами (FS - FieldSeparator) - по умолчанию - символ пробела

Максимально

Общее в awk

20 Поля

Поля

NR – Number of Record

NF – number of fields число полей

Номер строки

Record: Первоеполе Второеполе ……… Последнееполе $0 $1 $2 ….

gawk “{ print NR }” new.txt

gawk “{ print NR NF}” new.txt

Общее в awk

!!! Вывод Без пробела: NRNF

21 Переменные

Переменные

Умолчание

X = 1 - число

= 0

X = “ab” - строка

= “”

Y + “abc” - число

Y “abc” - строка

Общее в awk

22 Поля как переменные

Поля как переменные

$1 = "3" + $2

Используем значение поля

Меняем значение поля

n = 5 $(n+1)

Вычисляемый номер поля

Общее в awk

23 Массивы

Массивы

# Подсчёт частоты слов { for (i = 1; i <= NF; i++) freq[$i] = freq[$i] +1 # массив «слов» }

Общее в awk

Не объявляются

{ x[1] = 1 x[3] = $0 } END{ print x[1] print x[3] }

Используются элементы массива, «как переменные»

Индексация не числом, а полем (строкой)

24 Арифметические выражения

Арифметические выражения

+ - * / % Остаток

Выражение < Операция> Выражение

Операция склейка строк

X = 1.2 - число

z = “ab” “cde”

z = “abcde”

X = “ab” - строка

Переменная (Число - Строка) Число Строка Встроенная функция Выражение

(Константы)

Общее в awk

Константы

Строка строка

25 AWK (GAWK)
26 Образец (шаблон)

Образец (шаблон)

-- Регулярное выражение -- Выражение отношения -- Комбинация образцов -- BEGIN и END

27 Регулярное выражение

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

Программа ( с пустым действием) /Иванов/ напечатает из текстового файла те строки, которые содержат подстроку "Иванов" ( в том числе и "Ивановский машиностроительный завод" ).

Позволяет более точно описать класс строк, которые необходимо обработать или напечатать.

см. Пример 3

Шаблон

28 ИСТИНА и ЛОЖЬ в AWK

ИСТИНА и ЛОЖЬ в AWK

Из C

ИСТИНА - любое число, отличное от 0 или любая непустая строка

ЛОЖЬ – число 0 или пустая строка “”

"0" – истина , т.К. Строка не пустая

29 Выражение отношения

Выражение отношения

< Выражение> < Принадлежность> < Выражение> < Выражение> < Лог. Операция> < Выражение>

~ Содержится !~ Не содержится

< <= == != >= >

n >= 5

$0 ~ /Иванов/

$1 >= "s"

в строке содержится “Иванов”

Шаблон

s, t, u, v...

Строки, начинающиеся с символа s или следующих за ним по порядку

30 && Логическое И || Логическое ИЛИ

&& Логическое И || Логическое ИЛИ

Логическое НЕ (отрицание)

Логические операции

< Выражение> < Лог. Операция> < Выражение>

$0 ~ /Иванов/ || $0 ~ /Петров/

n >= 5 && n<10

в строке содержится “Иванов” или “Петров”

n = 5, 6, 7, 8, 9

Шаблон

31 BEGIN и END

BEGIN и END

BEGIN { }

Входной файл

Программа

END { }

BEGIN { printf “СТАРТ\n” } /Иванов/ END { printf “\nФИНИШ”}

Шаблон

Выполняется 1 раз

Выполняется много раз = количеству строк

Выполняется 1 раз

32 Метасимволы (шаблоны)

Метасимволы (шаблоны)

^ $ [ ] - + * .(Точка) \

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

/Иванов/

^ -- соответствует началу строки /^A/ - строки, начинающиеся на A $4 ~ /^Иванов/ $ -- соответствует концу строки. /A$/ отвечает строкам, заканчивающимся на A. $4 ~ /вна$/

"^$" Соответствует пустой строке.

Шаблон

33 [ ] -- множество единичных символов [AWK] соответствует множеству из

[ ] -- множество единичных символов [AWK] соответствует множеству из

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

Шаблон

34 + -- Многократное ( не менее одного) повторение в образце символа,

+ -- Многократное ( не менее одного) повторение в образце символа,

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

Шаблон

35 .(Точка) -- произвольный единичный символ

.(Точка) -- произвольный единичный символ

* - обозначает произвольную комбинацию символов. "13." - 131 133 134 13_ 13\n 13 \ -- отменяет специальное значение последующего символа. \$ - Это символ $ \\ - это символ \

Шаблон

36 Управляющие последовательности

Управляющие последовательности

Для символов ASCII с кодами 0 - 31

\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 Вертикальная табуляция

37 Символы, используемые в разных «шаблонах»

Символы, используемые в разных «шаблонах»

printf("Hello Word !!! \n");

Универсальный способ

\Ddd строка до трех восьмеричных цифр (0 - 377) \xdd строка шестнадцатеричных цифр (0 - FF)

Как напечатать \ “ ?

\\ 0x5c \ Обратная наклонная черта \/ / Прямая наклонная черта \' 0x27 ' Одинарная кавычка (апостроф) \" 0x22 " Двойная кавычка \? 0x3F ? Вопросительный знак

38 AWK (GAWK)
39 Действие

Действие

Предложения, разделенные ; или \n (новая строка)

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

40 Вывод (Печать)

Вывод (Печать)

Print - выводится вся запись + \n print $0

Print $1, $2 - значения полей выводятся через пробел

Print $1 “abc” - выводится конкатенация значений полей

Print “” – выводится пустая строка

Формат вывода – по умолчанию

Действие

41 printf format, item1, item2,

printf format, item1, item2,

..

Функция sprintf(format, item1, item2, ...)

Форматированный вывод

Действие

42 Управляющие операторы

Управляющие операторы

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

Действие

43 If (если)

If (если)

If( условие ) действие

If( условие ) действие else действие

Анализ условия на истинность, == 0

if (x % 2 == 0) print "x is even" else print "x is odd"

Действие

44 While (пока)

While (пока)

While (условие ) действие

Выполнение действия пока значение условия != 0 проверка перед каждым выполнением

{ i = 1 while( i <= 3) { print $i i=i+1 } }

Действие

45 Do (делай )

Do (делай )

Do действие while ( условие )

{ i = 1 do { print $0 i++ } while (i <= 10) }

Действие

46 For (для)

For (для)

Инициализация задает инициализацию цикла while (условие) проверка перед каждой итерацией { действие приращение часть итерации }

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

for (i = 1; i <= 100; i = i + 2) print i

Действие

47 For (для)

For (для)

For (переменная in массив) действие

# Пишем 1 для каждого встречного слова { for (i = 1; i <= NF; i++) used[$i] = 1 }

# Ищем количество разных слов длиннее 10 знаков END { for (x in used) if (length(x) > 10) { num = num +1 } print num, "words longer than 10 characters" }

Действие

48 break

break

continue

Break (прерывание) – «досрочный» выход из цикла

- Для do, while, for

Continue (продолжение) – новая итерация - выполнение нового цикла

Действие

49 Встроенные функции

Встроенные функции

Математические функции exp() – экспонента log() - натуральный логарифм sqrt() - квадратный корень int() - целая часть числа

Действие

50 Строковые функции

Строковые функции

length(arg) - Функция длины arg. length - длина текущей строки substr(s, m, n) - Возвращает подстроку строки s, начиная с позиции m, всего n символов. index(s, t) - Возвращает начальную позицию подстроки t в строке s. (Или 0, если t в s не содержится.)

Действие

51 sprintf(fmt,exp1,exp2,

sprintf(fmt,exp1,exp2,

..) - форматированная печать (вывод) в строку, идентично PRINTF split(s, array, sep) - Помещает поля строки s в массив array и возвращает число заполненных элементов массива. Если указан sep, то при анализе строки он понимается как разделитель.

Действие

52 AWK (GAWK)
53 AWK (GAWK)
«AWK (GAWK). (Манипулирование файлами данных, выборка и обработка текста )»
http://900igr.net/prezentacija/bez_uroka/awk-gawk.-manipulirovanie-fajlami-dannykh-vyborka-i-obrabotka-teksta-72802.html
cсылка на страницу
Урок

Без урока

1 тема
Слайды
900igr.net > Презентации по > Без темы > AWK (GAWK). (Манипулирование файлами данных, выборка и обработка текста )