Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Метод_ПСРВ.doc
Скачиваний:
26
Добавлен:
12.02.2016
Размер:
1.6 Mб
Скачать

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

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

sin (expr)

синус expr

cos (expr)

косинус expr

exp (expr)

возведение в степень expr

log (expr)

натуральный логорифм expr

sqrt (expr)

извлечение корня expr

int (expr)

целая часть числа

length (s)

длина строки s

printf (fmt, ...)

форматирование (аналогично Си) по спецификации fmt.

substr (s, m, n)

подстрока в n символов строки s, начинающаяся с m.

getline ()

чтение следующей строки.

0

конец файла, иначе 1.

index (s1, s2)

номер позиции, с которой s1 совпадает с s2, иначе 0.

split (s, M, c)

строка s разбивается элементы массива M по разделителю c (по умолчанию FS=" "); функция возвращает число полей.

Примеры.

1) awk ' BEGIN {FS = "."; a=0}

length ($1) > 8 {print (length ($1), $0);

a++

}

END {print ("Найдено строк: " a) }' f-awk

Результат:

9 Сидоров С.К. 1979 40

10 Хведоров И.Х. 1970 60

Найдено строк: 2

Здесь поля разделяются по ".", выбираются строки у которых длина первого поля больше 8-ми, и их длина "length ($1)" печатается перед строкой "$0".

2) awk '{i=split($0, Name, ".");

for (j=1; j<=i; j++)

print ("Name[" j "]=" Name[j])

}' f-awk

Результат:

Name[1]=Иванов И

Name[2]=И

Name[3]= 1980 50

Name[1]=Петров А

Name[2]=В

Name[3]= 1979 40

Name[1]=Сидоров С

Name[2]=К

Name[3]= 1979 40

Name[1]=Хведоров И

Name[2]=Х

Name[3]= 1970 60

3) awk '{print (length)}' f-awk

Результат:

22

22

22

22

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

4) awk '{printf "%7.2f %s\n", NR, $0}' f-awk

echo

awk '{printf "\t%s %s \n", NR, $0}' f-awk

Результат:

1.00 Иванов И.И. 1980 50

2.00 Петров А.В. 1979 40

3.00 Сидоров С.К. 1979 40

4.00 Хведоров И.Х. 1970 60

1 Иванов И.И. 1980 50

2 Петров А.В. 1979 40

3 Сидоров С.К. 1979 40

4 Хведоров И.Х. 1970 60

2. Упражнения

УПРАЖНЕНИЕ 2.1.

Выполнить и отобразить в отчете следующие действия:

Создайте произвольный текстовый файл и два файла следующей структуры:

Структура файла query1

Структура файла query2

УПРАЖНЕНИЕ 2.2.

  • В текстовом файле перенесите третью от конца строчку в начало файла.

  • В текстовом файле первый символ каждой строки заменить на первый символ предыдущей строки. Первая строка остается без изменений.

  • В файле query1 определить общее число отделов в фирме.

  • В файле query1 определить количество сотрудников на каждой должности.

  • В файле query1 определить отделы, в которых нет менеджеров ("MANAGER").

  • В файле query1 определить среднюю зарплату продавцов ("SALESPERSON").

  • В файле query2 определить трех покупателей, которым предоставлены наибольшие кредиты.

  • В файле query2 определить средний кредит для каждого штата.

Для протоколирования работы используйте команду script.

3. Содержание отчёта

  1. Номер практической работы.

  2. Название и цель работы.

  3. Краткое описание команд.

  4. Результаты выполнения упражнений 2.1-2.2.

Справочная информация.

Script протоколирование сеанса

СИНТАКСИС script [-a] файл

ОПИСАНИЕ

Команда script начинает "вложенный" сеанс и протоколирует весь терминальный ввод и вывод в заданном файле. Завершение вложенного сеанса и выполнения команды skript происходит по нажатию комбинации клавиш Ctrl+D.

ОПЦИИ

-a

добавление протокола нового сеанса к содержимому файла, если эта опция не задана, то файл создается заново.

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ №8

Программирование сценариев для интерпретатора shell

Цель – получить начальные навыки

1. Краткие теоретические сведения

1.1. ЭЛЕМЕНТЫ ЯЗЫКА SHELL

1)Переменная

Переменная вводится операцией присваивания, которая имеет вид

name=value

Операция присваивает переменной name последовательность символовопределенных значением value. В языке нет понятия типа, переменные могут иметь только символьные значения. Значение value может быть пустым. Подстановка значения (расширение переменной ) происходит только тогдакогда переменная используется с префиксом $ или в форме ${name}. Если для переменной задается значение, содержащее пробелы, то его нужно заключить в кавычки (одинарные или двойные)

2)Параметры

Параметры это некоторые объекты имеющие значение. QNX shell поддерживает три вида параметров:

- позиционные параметры;

- специальные параметры;

- именованные переменные (переменные, рассмотренные в п.п.1))

Позиционные параметры - это все параметры, специфицированные в командной строке shell и получающие значения при запуске shell. Позиционные параметры обозначаются комбинацией символа $ и числа 0-9 т.е. $1- означает первый параметр; $2 - означает второй параметр,и.т.д.\

Позиционные параметры могут быть также назначены командой set(встроенная команда shell).

Специальные параметры обеспечивают общедоступный сервис при программировании shell сценариев. Используются следующие виды специальных параметров:

$@ - последовательность значений всех позиционных параметров, начиная с первого, если расширение параметров происходит внутри строки в кавычках эта последовательность рассматривается как множество операндов;

$* - последовательность значений всех позиционных параметров, начиная с первого, если расширение параметров происходит внутри строки в кавычках эта последовательность рассматривается как один операнд;

$# - число позиционных параметров;

$? - выходной статус последней исполненной команды (0 –нормальное завершение);

$$ - идентификатор процесса введенного shell;

$! - идентификатор процесса выполняющего последнею асинхронную команду;

$0 - имя shell сценария (или интерпретатора shell).

set команда

set [option] [-o option name] ... [argument ...]

set [option] [+o option name] ... [argument ...]

set --

set команда устанавливает и сбрасывает значения позиционных параметров определенных полями argument. Вариант set-- сбрасывает значения всех позиционных параметров.