Содержание
- 2. Составные шаблоны Для конструирования составных шаблонов можно использовать логические операции и круглые скобки. В этом случае
- 3. Примеры. (NF 4) Этот шаблон соответствует всем записям ввода, которые не имеют точно четырех полей. Шаблон
- 4. Внимание! Шаблон диапазона $1==2, $1==5 отличен от составного шаблона $1>=2 && $1 Пример. Файл file.me содержит
- 5. А) Программа awk ‘$1==3, $1==5’ file.me выдаст результат:
- 6. Б) Программа awk ‘$1>=3 && $1 выдаст результат:
- 7. Пример. Вывести марки всех автомобилей фирмы "Ford", цены которых находятся в пределах от 8000$ до 15000$
- 8. Операторы в awk В программе awk возможно применение некоторых сложных операторов. В основном они совпадают с
- 9. При выполнении более, чем одного оператора в оператор_1 или в оператор_2 необходимо их заключать в фигурные
- 10. Б) Цикл for аналогичен в языке Си, но отличается от цикла в языке shell: for (
- 11. В) Цикл while while ( условие ) { операторы } Г) Оператор break вызывает немедленный выход
- 12. Е) Опереатор next вызывает чтение следующей входной строки и сопоставление ее с шаблонами в начале программы
- 13. Пример: Вывести поля файла file1.me в обратном порядке. awk ‘{for (i=NF; i>0; --i); print $i}’ file1.me
- 14. Дополнительные переменные ARGC - количество аргументов командной строки. ARGV - массив, содержащий аргументы командной строки. Индексы
- 15. Пример. Пусть файл File.1 содержит три строки-записи, а файл File.2– две. Тогда команда awk’{ print FNR
- 16. FLENGTH - хранит значение длины строки сопоставления, производимого функцией match(). FSTART - хранит значение начала строки
- 17. ENVIRON - массив, содержащий значения текущих переменных окружения. Индексы массива – это имена самих переменных, а
- 18. CONVFMT - формат преобразования чисел. Ее значение по умолчанию - %6g. Эта переменная обычно используется только
- 19. Если она определена, то считается, что все поля имеют фиксированную ширину. В этом случае запись ввода
- 20. Значения переменной FIELDWIDTHS – числа, разделенные пробелами или табуляцией, поэтому поля не обязательно должны быть одинаковой
- 21. Проблема в следующем. Как отделить признак “пола” от фамилии? Программа. awk ‘{BEGIN { FIELDWIDTHS==1 7 1
- 22. Здесь 1 – первое поле длиною 1; 7 – второе поле длиною 7 (фамилия, запятая и
- 23. IGNORECASE - управляет зависимостью регулярного выражения от регистра. Если переменная не равна нулю, то при проверки
- 24. Взаимодействие с интерпретатором Вопрос в следующем, как передать программе на awk значения переменных из командной строки?
- 25. Пример 1. awk –f programfile In.file В данном случае массив ARGV будет иметь следующие значения: ARGV[0]
- 26. Способ 2. Для передачи значений переменных надо присвоить значения этим переменным, то есть необходимо или в
- 27. echo $TZ awk ‘/^”TZ”/ {print $1,$2}’ file.me TZ=”abcd” Способ 3. Предположим, что мы хотим создать программу
- 28. Язык awk может явно предоставлять возможность выбора полей. Hаша задача - передать номер N программе awk.
- 29. Пример 3. Создать программу addup, которая суммирует значение N-го поля. awk ‘{ S+= $'$1'} END {print
- 30. awk '{ BEGIN { N = '$1'} { for ( i = 1; i } END
- 31. Здесь шаблон BEGIN используется для засылки значения в переменную N, чтобы не засорять конец программы кавычками.
- 32. Здесь нет никаких возможностей передать им сразу и параметр N и произвольно длинный список имен файлов.
- 33. Функции Функции могут использоваться в любом месте, где может применяться оператор-действие. Функции имеют свободный формат, но
- 34. Список аргументов идет через запятые. Это переменные, что используются внутри функции. Тело функции – это один
- 35. Параметры функции передаются по значению, то есть действительные параметры копируются и передаются формальным параметрам. Пример. Cat
- 36. Результат будет: 5 5 Это происходит потому, что вызов функции is(x) копирует значение в локальную переменную
- 37. Локальные переменные Им не уделено особого внимания в awk. Поэтому они должны быть перечислены в списке
- 38. Глобальные переменные Любая переменная, что не входит в список параметров, является глобальной. Пример: function is(x) {x=8;
- 39. Обращение к функциям - Функции могут вызывать друг друга. - Обращение к функции может быть рекурсивным.
- 40. Для этого необходимо выполнить: system (value) где value – строка, что будет вводиться из командной строки
- 41. Тогда программа на awk будет иметь вид: awk ‘{system (“cat” $1)}’ file.me > file.your В этом
- 42. CGI программирование с применением shell и awk Для изложения этого материала необходимо повторить материал по: протокол
- 43. методы: GET POST action: адрес CGI скрипта. Структура CGI скрипта: заголовки HTTP протокола; пустая строка; тело
- 44. Пример 1. Вывести значения некоторых переменных окружения Web-сервера. Файл ENV-sh1.cgi #!/bin/bash/ # Указание для web-сервера, где
- 45. echo “It is now `date`” # вывод текщей даты echo “QUERY_STRING = $QUERY_STRING” echo “REMOTE_HOST =
- 46. Пример 2. Вывести значения всех переменных окружения, включая переменные Web-сервера. Файл ENV-sh2.cgi #!/bin/bash/ echo “Content-type: text/html”
- 47. for i in `env` # Операция `env` выдает значение # команды env do echo “$i ”
- 48. Команда env: выдает значения текущей рабочей среды окружения по одной переменной в каждой строке в формате
- 49. Здесь: опция “-“ ограничивает рабочую среду только теми переменными, что есть в списке формата Имя=Значение. Без
- 50. Примеры: env - выводит текущее окружение в формате Имя=Значение env PATH=/usr/pmi sh - запускает новый командный
- 51. Для метода GET наиболее важна переменная QUERY_STRING, содержащая в формате Имя_1=Значение_1&Имя_2=Значение_2&…. содержимое заполненной формы, которое добавляется
- 52. Для распознавания метода передачи данных от формы применяется переменная окружения REQUEST_METHOD, которая содержит значение “GET” для
- 53. Но в силу того, что браузер передает информацию из формы в закодированном виде, где все пробелы
- 54. Пример: В начале примера мы программируем на языке shell. echo “Content-type: text/html” echo “” echo “
- 55. # Занесение в переменную Var1 данных от формы if test $REQUEST_METHOD = ”GET” then Var1=$QUERY_STRING elif
- 57. Скачать презентацию