Реферат Загальні можливості мови AWK
Работа добавлена на сайт bukvasha.net: 2015-10-28Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Міністерство освіти України
Львівський державний університет ім. І. Франка
Факультет прикладної математики
та інформатики
Звіт
про виконання практичного завдання з курсу
"ДРФМД"
Львів - 1998
Приклади роботи з системою UNIX
Скопіювати усі текстові файли (з розширеням .txt) в каталог TextDir
cp *.txt TextDir
Дозволити читання усіх файлів каталогу AccessDir заданих шаблоном.
UNIX-скріпт в файлі changeaccess виглядає таким чином:
cd AccessDir
chmod +r $1
cd ..
Приклад виклику: changeaccess “m*.*” – дозволяє читання усіх файлів, що
починаються буквою m. Шаблон обов’язково вказується у лапках.
Приклад з мовою awk. Потрібно розв’язати квадратні рівняння типу
Ax2 + Bx + C = 0 якщо коефіціенти A, B та C задані у вхідному файлі
Вміст файлу на мові awk sqrt.awk
{
a = 2 * $1;
b = $2;
c = $3;
d = b * b - 2 * a * c;
if (((a == 0) && (b == 0)) || (d < 0))
printf(" Unable to calculate ")
else
if (a == 0)
printf(" x = %f ", c / b)
else
if (d == 0)
printf(" x = %f ”, - b / a)
else
printf(" x1 = %f, x2 = %f ",
(- b - sqrt(d)) / a, (- b + sqrt(d)) / a)
}
Вміст файлу з UNIX-скріптом для запуску awk-програми sqrtcalc
awk -f sqrt.awk $1
Приклад роботи програми: нехай файл koef.txt містить таки коефіціенти:
0 -1
1 0 1
2 4 2
0 0 5
1 -3 2
1 -2
Набравши в командному рядку ‘sqrtcalc koef.txt’ отримаємо результат:
x1 = -1, x2 = 1
Unable to calculate
x = -1
Unable to calculate
x1 = 1, x2 = 2
x = 2
Теоретична частина. Загальні можливості мови awk
awk – інтерпретуюча мова програмування, що підтримується операційною системою UNIX. Виклик програми здійснюється командою awk –f program file, де program є назвою файлу з awk-програмою, а file – файл даних. Не порушуючи логіки системи UNIX команда awk забезпечує потоковий ввід-вивід. who | awk -f program означає, що як файл даних використовується результат виконання команди who. Синтаксис awk-програм схожий із синтаксисом мови Cі, найбільша різниця між awk та Сі заключається в тому, що змінні в awk не типівізовані як в BASIC або тип Variant в Delphi.
Текст програми пишеться у операторних дужках { } перед яким може стояти шаблон BEGIN або END. BEGIN означає, що дана частина коду виконується до початку обробки вхідних даних, END – після закінченя. Якщо шаблон не вказано, код виконується для кожного рядка з вхідного потоку.
BEGIN{ n = 1 }
{
a[n] = $1;
b[n] = $2;
n++
}
END{
for (i = 1; i <= n; i++)
printf(“a[i] + b[i] = %f\n”, a[i] + b[i])
}
В даному прикладі код {
a[n] = $1;
b[n] = $2;
n++
} виконається стільки разів, скільки рядків містить вхідний потік.
Арифметичні та логічні операції в awk:
awk | Pascal |
z = x + y | z := x + y |
z = x – y | z := x – y |
z = x * y | z := x * y |
z = x / y | z := x / y |
z += y | z := z + y |
z = x % y | z := x mod y |
-=, *=, /=, %= | Аналогічно |
x++ | inc(x) |
x-- | dec(x) |
x && y | x and y |
x || y | x or y |
! x | not x |
x == y | x = y |
x != y | x <> y |
x < y | x < y |
x > y | x > y |
x ~ y | x in y |
x = (w) ? y : z | if w then x := y else x := z |