Варіанти індивідуальних завдань 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Варіанти індивідуальних завдань



 

Варіант Номер завдання Текст завдання

1

1 В одному з текстових лабораторної роботи N1 перенести третій від кінця рядок у початок файлу.
2  З інформації, що втримується у файлах query..., визначити відділи (назва й місто), які одержували замовлення на загальну суму більше 1000.
3 Визначити кількість груп користувачів.

2

1 В одному з текстових лабораторної роботи N1 перенести третій від почала рядок у кінець файлу.
2  З інформації, що втримується у файлах query..., визначити міста, у яких розташовані відділи, що виконували замовлення в лютому 1991 р.
3 Визначити кількість підкаталогів в /home, до яких немає публічних прав доступу.

3

1 В одному з текстових лабораторної роботи N1 перед кожним рядком вставити поточний час.
2  З інформації, що втримується у файлах query..., визначити прізвища продавців, які виконували замовлення на поставку товару 'SP JUNIOR RACKET'.
3 Визначити кількість підкаталогів в /home, до яких є публічні права на пошук і читання в них.

4

1 В одному з текстових лабораторної роботи N1 вилучити другий рядок, що починається з букви 'Н'.
2  З інформації, що втримується у файлах query..., визначити штат, у якому було зроблено замовлення на саму більшу загальну суму.
3 Визначити кількість користувачів з вашої студентської групи.

5

1 В одному з текстових лабораторної роботи N1 залишити в кожному рядку не більш двох слів. Слова, що виходять за цю межу помістити в окремий файл. У першому файлі-результаті в тих рядках, які містять менш двох слів, у кінець рядка повинен бути доданий символ '='. У другому файлі-результаті порожніх рядків залишатися не повинне, а перед непустими рядками повинні бути зазначені їхні номери у вихідному файлі, відділені від іншого тексту одним пробілом.
2  З інформації, що втримується у файлах query..., визначити товар, якого була замовлена найбільша кількість екземплярів в одному замовленні.
3 Визначити кількість (не підкаталогів і не посилань) файлів у каталозі /home.

6

1 В одному з текстових лабораторної роботи N1 залишити в кожному рядку не більш 2-х слів. Залишок перенести в наступний рядок. Якщо другий рядок у парі виявляється порожньою - друкувати в ній символ '='.
2  З інформації, що втримується у файлах query..., визначити 5 покупців, які зробили замовлень на найбільшу загальну суму в 1990 р.
3 Визначити кількість файлів або підкаталогів у кореневому каталозі, до яких усе мають повні права доступу.

7

1 В одному з текстових лабораторної роботи N1 перший символ кожного рядка замінити на перший символ попереднього рядка. Перший рядок залишається без змін.
2  З інформації, що втримується у файлах query..., визначити назви товарів, які продавалися за мінімальною ціною.
3 Визначити кількість файлів у каталозі /etc, які є символічними посиланнями.

8

1 В одному з текстових лабораторної роботи N1 поміняти місцями два перші й два останні символи кожного рядка.
2  З інформації, що втримується у файлах query..., визначити прізвище продавця, який продав товару 'SP JUNIOR RACKET' на максимальну суму в одному замовленні.
3 Визначити кількість файлів у каталозі /etc, на які є більш одному твердого посилання.

9

1 В одному з текстових лабораторної роботи N1 поміняти місцями перший і останній рядка файлу.
2  З інформації, що втримується у файлах query..., визначити прізвище продавця, який першим продав товар 'SP JUNIOR RACKET' в 1991 р.
3 Визначити кількість файлів у каталозі /etc, які створені не цього року.

10

1 В одному з текстових лабораторної роботи N1 після рядків, які закінчуються крапкою або комою, вставити порожній рядок.
2  З інформації, що втримується у файлах query..., визначити назви товарів, які першими були виставлені в продаж.
3 Вибрати впорядкований за алфавітом список підкаталогів в /home, до яких немає публічних прав.

11

1 В одному з текстових лабораторної роботи N1 перенести останнє слово в кожному рядку в новий рядок. Для рядків, що полягають із одного слова - не робити нічого.
2  З інформації, що втримується у файлах query..., визначити назви товарів, які замовлялися разом з товаром 'SP JUNIOR RACKET'.
3 Вибрати впорядкований за алфавітом список підкаталогів в /home, до яких є публічні права на пошук і читання в них.

12

1 В одному з текстових лабораторної роботи N1 перенести перше слово кожного рядка в початок наступного рядка.
2  З інформації, що втримується у файлах query..., визначити назви товарів, які коли-або замовляв покупець 'JOCKSPORTS'.
3 Вибрати впорядкований за алфавітом список користувачів з вашої студентської групи.

13

1 В одному з текстових лабораторної роботи N1 у всіх парних рядках перенести перше слово рядка в кінець рядка. Рядка, що містять тільки одне слово, не змінюються.
2  З інформації, що втримується у файлах query..., визначити прізвища продавців, які коли-або продавали товари по їхній максимальній ціні.
3 Вибрати впорядкований за алфавітом список файлів (не підкаталогів, не посилань) у каталозі /home.

14

1 В одному з текстових лабораторної роботи N1 у всіх непарних рядках перенести останнє слово рядка в початок рядка. Рядка, що містять тільки одне слово, не змінюються.
2  З інформації, що втримується у файлах query..., визначити назви товарів, на які не було замовлень в 1990 р.
3 Вибрати впорядкований за алфавітом список файлів у каталозі /etc, на які є більш одному твердого посилання.

15

1 В одному з текстових лабораторної роботи N1 поміняти місцями парні рядки з непарними.
2  З інформації, що втримується у файлах query..., визначити назви товарів, які не були в продажі в 1990 р.
3 Вибрати впорядкований за алфавітом список файлів у каталозі /etc, які створені не цього року.

 


 

Лабораторна робота 5 Тема роботи: Утиліта awk Ціль роботи: ознайомлення з утилітою awk і мовою awk.

Хід роботи

Виконуючи попередню роботові, Ви, можливо, не раз поскаржилися на відсутність в елементарних фільтрах Unix обчислювальних і логічних можливостей. Цей недолік компенсується в утиліті awk, яка, будучи однієї з утиліт, що працюють із регулярними вираженнями, у тієї ж час надає програмістові алгоритмічні й обчислювальні можливості, що базуються на синтаксисі мови C. Як ви побачите нижче, багато з тихнув попередніх завдань, для розв'язку яких нам доводилося створювати довгі конвеєрні ланцюжки команд, можуть бути вирішено одним звертанням до утиліти awk.

awk може застосовуватися також і як фільтр і, сполучаючись у ланцюжку фільтрації з іншими утилітами, необмежено розширювати можливості командного керування.

Хоча синтаксис внутрішньої мови awk базується на синтаксисі мови C, слід пам'ятати, що мова awk - мова обробки текстів, у цій мові існує єдиний тип даних - рядок символів, а при виконанні обчислювальних операцій відбуваються "прозорі" перетворення строкових операндов у числові й числових результатів - у строковий тип. У даній лабораторній роботі Вам пропонується розробити програми awk для розв'язку завдань обробки текстових файлів. Ви можете комбінувати виклик awk з викликами інших утиліт, алі в більшості випадків у цьому немає необхідності.

У лабораторній роботі використовуються ті ж файли вихідних даних, які використовувалися в роботі 3:

  • текстовий файл, створений у роботі N1;
  • структура файлу../metod/query1; склад файлу../metod/query1
  • структура файлу../metod/query2; склад файлу../metod/query2
  • структура файлу../metod/query3; склад файлу../metod/query3
  • структура файлу../metod/query4; склад файлу../metod/query4

Завдання 1

Виконаєте за допомогою awk ту ж обробку текстового файлу, якові Ви виконували в Завданні 1 роботи N4.

Завдання 2-3

Виконаєте за допомогою awk обробку файлів../metod/query..., відповідно до Вашого варіанта індивідуального завдання.

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

 

Довідка

Команда awk:

Синтаксис

  awk [опції] ['скрипт_awk'] [файл...]


Опис

  Утиліта awk шукає у файлі рядка, що задовольняють шаблонам, заданим у скрипте_awk, і виконує над ними дії, задані в скрипте_awk. Якщо не зазначене жодного файлу або задане ім'я файлу -, використовується стандартне введення. Результат роботи awk направляється у вихідний потік.


Опції

 
-F символ указує символ, використовуваний в оброблюваному тексті як роздільник полів. За замовчуванням - пробіл.
-f файл указує ім'я файлу, з якого читається скрипт_awk. Якщо ця опція задана, скрипт_awk у командному рядку не вводиться.


Мова awk

Скрипт_awk являє собою програму специальном языке awk, описывающую шаблоны, по которым отбираются строки и действия над ними. Скрипт представляет собой последовательность элементов, каждый из которых имеет вид:

[ шаблон ] { дія }

Семантика елемента така, що якщо перебуває рядок, відповідна до даного шаблону, то над нею виконується дана дія. Якщо шаблон пропущений, то дія виконується над усіма рядками файлу. Опис шаблонів ґрунтується на базовых регулярных выражениях (РВ), опис дій - на синтаксисі мови програмування C. При роботі awk читає файл послідовно, рядок за рядком і над рядками, що задовольняють заданим у скрипте шаблонам, виконує задані дії.

Опис шаблонів

Шаблон являє собою РВ, укладене в символи "/.../". У мові awk синтаксис базових РВ розширений наступними доповненнями:

"()" - дужки для групування РВ;

"|" - логічне "або";

"+" - плюс, що коштує за РВ, означає будь-яку послідовність входжень цього РВ, починаючи з першого;

"?" - знак питання, що коштує за РВ, означає 0 або 1 входжень цього РВ.

У шаблону також допускаються вираження відносини, які мають вигляд:

вираження операція_приналежності вираження

або

вираження операція_відношення вираження

Операції_приналежності бувають: "~" (належить) і "!~" (не належить). Операції відносини: "==", "!=", ">", ">=", "<", "<=" - у їхньому звичайному змісті. У лівій частині таких виражень в обох випадках звичайно застосовується ім'я поля рядка, у правій, у першому випадку - шаблон, у другому - будь-яке вираження.

Допускається логічна комбінація шаблонів з використанням операцій "&&", "||", "!".

Комбінація виду:

шаблон1, шаблон2

означає застосування дій, що задаються з даними шаблонами, до рядка, що задовольняє шаблону1, і далі - до всіх наступних за нею рядкам, аж до появи рядка, що задовольняє шаблону2, включно.

У мові awk передбачено два спеціальні шаблони - BEGIN і END. Перший описує дії, виконувані перед початком читання файлу, другий - дії, виконувані після закінчення читання.

Дії

Мова опису дій awk майже ідентичний мові програмування C.

Операції:

+ - * / %

++ -- у постфиксной і префиксной формах

= += -= *= /= % =

< <= > >= ==!=

! && ||

Оператор, остання операція в якому є операцією присвоювання, є оператором присвоювання.

Оператори, що управляють потоком обчислення:

if (умова) оператор

[else оператор ]

 

while (умова) оператор

 

for (вираження; умова; вираження) оператор

     на відміну від мови C, у вираженнях циклу for не допускається

     перерахування через кому

 

break

 

continue

 

next негайний перехід до наступного рядка файлу

 

exit вихід із програми

Оператори виводу:

  • print список_виражень виводить значення виражень, перерахованих у списку (через пробіл).
  • printf (...) - повний аналог однойменної функції мови C.

Оператор завершується символом ";" або перекладом рядка. Якщо оператор буде продовжений на наступному рядку, перший рядок повинна завершуватися символом "\"

Будь-яка послідовність операторів, укладена у фігурні дужки "{... }" є складеним оператором.

Коментар має той же вид, що й у мові C: "/*... */", на відміну від З, коментарі можна вставляти тільки між операторами, але не в середину оператора.

Функції:

length(arg) Повертає довжину arg. Якщо arg не зазначений, то видає довжину поточного рядка.
exp(), log(), sqrt() Математичні функції: експонента, логарифм, квадратний корінь.
int() Повертає целую частина числа.
substr(s,m,n) Повертає подстроку рядка s, починаючи з позиції m, усього n символів. Якщо n не задане - до кінця рядка.
index(s,t) Повертає початкову позицію подстроки t у рядку s. (Або 0, якщо t в s не втримується.)
sprintf(fmt,exp1,exp2,...) Форматированная печатка в рядок, ідентично printf().
split(s,array,sep) Поміщає поля рядка s у масив array і повертає число заповнених елементів масиву. Якщо зазначений sep, то при аналізі рядка він розуміється як роздільник.

 Мова програмування awk допускає використання:

  • полів;
  • стандартних змінних;
  • користувацьких змінних;
  • масивів.

Посилання на поля оброблюваного рядка можливі по іменам: $1, $2, $3... Ім'я $0 - посилання на весь рядок.

У мові awk визначені наступні стандартні змінні:

FILENAME Ім'я поточного оброблюваного файлу
FS Роздільник полів у вхідному рядку
NF Число полів у вхідному рядку
NR Номер поточної вхідного рядка
OFS Роздільник полів у вихідному рядку
ORS Роздільник записів у вихідному файлі

Користувацькі змінні не вимагають оголошення, вони автоматично оголошуються тільки вони з'являться в програмі. Змінні можуть інтерпретуватися як числові або строкові, інтерпретація виконується залежно від контексту використання змінної.

Масиви також не оголошуються, а ухвалюють значення з контексту. Масиви в скрипте awk є динамічними, тобто, нові елементи додаються в масив у міру необхідності. Індексом у масиві може бути як числове, так і строкове значення.



Поделиться:


Последнее изменение этой страницы: 2020-12-09; просмотров: 67; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.219.236.62 (0.044 с.)