Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metod_lab_OSUNIX_2006-ukr.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
759.81 Кб
Скачать

6.3.8.6 Комбінації виражень

У складене вираження поєднуються більш прості вираження, які можуть бути в круглих дужках і розділятися логічними операторами || (або), && (і) і ! (немає). Припустимо, наприклад, що потрібно вибрати всі країни Азії із чисельністю населення, що перевищує 500 млн. чоловік. Програма

$4 == "Asia" && $3 > 500

вирішує це завдання шляхом виводу всіх рядків, четверте поле в яких має значення "Asia", а значення третього поля перевищує 500. Наступні приклади програм демонструють можливості застосування логічних операторів у програмах:

$4 == "Asia" || $4 == "Africa"

або

S4 ~ /^(Asia|Africa)$/

6.3.8.6 Діапазони виражень

Діапазон виражень подається у вигляді двох виражень, розділених комі:

pat1, pat2 { ... }

У цьому випадку дія виконується для всіх рядків, розташованих між настанням події pat1 і до наступного настання події pat2 (включно). Наприклад, вираження

/Canada/, /Brazil/

означає вибірку рядків, починаючи з першого рядка, що містить підрядок "Canada", і закінчуючи наступним виявленням підрядка "Brazil":

6.3.8.8 Дії

В операторі "вираження-дія" дія позначає операцію, виконувану над рядками, обраними відповідно до вираження. Найчастіше використовуваними діями є вивід і присвоювання, але дія може являти собою й комбінацію з операторів.

6.3.8.9 Вбудовані змінні

Список підтримуваних в awk убудованих змінних утримується в таблиці 6.3. Деякі змінні вже використовувалися, з іншими познайомимося.

Таблиця 6.3 – Вбудовані змінні мови awk

Змінна

Значення

Замовчування

ARGC

ARGV

FILENAME

FNR

FS

NF

NR

OFMT

OFS

ORS

RS

RSTART

RLENGTH

SUBSEP

кількість аргументів у командному рядку

масив аргументів командного

ім'я поточного вхідного файла

номер запису в поточному

роздільник вхідних

кількість полів у поточному

кількість прочитаних

формат висновку для

роздільник полів на

роздільник записів на

роздільник записів на

індекс першого символу, ототожненого функцією match

довжина рядка, ототожненого функцією match

роздільник

-

-

-

-

пробіл&tab

-

-

%.6g

пробіл

новий рядок

новий рядок

-

-

"\034"

6.3.8.10 Арифметичні дії

Дії можуть містити в собі звичайні арифметичні вираження, призначені для обчислення числових значень. Припустимо, наприклад, що потрібно обчислити щільність населення для кожної із країн, описаних у файлі countries. Оскільки площа країни в тисячах квадратних миль зберігається у другому полі, а чисельність населення в млн. чоловік у третьому, щільність населення (людина на кв. милю) можна виразити формулою 1000*$3/$2. Програма

{ print "%10s %6.1f\n", $1, 1000 * $3 / $2 }

виводить ім'я кожної країни й щільність її населення. Результат виглядає в такий спосіб:

USSR 30.3

……......

Algeria 19.6

Арифметичні дії виконуються над числами із плаваючою крапкою. До арифметичних операторів ставляться +, -, *, /, % (одержання залишку) і ^ (зведення в ступінь; синонім: **). Сукупність констант, змінних, ідентифікаторів полів, елементів масивів, функцій і інших об'єктів, пов'язаних між собою цими операторами, становить арифметичне вираження. В awk допускається й експонентний запис значень: 1e6 = 1E6 = 10e5 = 1000000.

Найпростіша форма оператора присвоювання:

v = e,

де v – ідентифікатор змінної або поля, e – вираження.

awk підтримує вбудовані арифметичні функції, що наведені у таблиці 6.4.

Таблиця 6.4 – Вбудовані арифметичні функції мови awk

Функція

Повертається значення

atan2(y,x)

cos(x)

exp(x)

int(x)

log(x)

rand()

sin(x)

sqrt(x)

srand(x)

арктангенс дробу y/x у діапазоні від -пі до пі

косинус x, де x у радіанах

експонентна функція від x

ціла частина від x

натуральний логарифм від x

випадкове число в діапазоні від 0 до 1

синус x, де x у радіанах

квадратний корінь із x

x - новий аргумент для rand()

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]