Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

287649

.pdf
Скачиваний:
3
Добавлен:
15.11.2022
Размер:
337.48 Кб
Скачать

2.6. Написание Awk-скриптов

Для выполнения данной части лабораторной работы создайте текстовые файлы sport и сars, как описано в разд. 2.2. Ниже приведено содержимое указанных текстовых файлов.

Содержимое файла sport:

Jim

Fost

student

11.10.87 5

football

Mike

Brown

student

12.09.86 6

football

John

Rodd

student

05.09.86 3

swimming

Bryan

Talbot

lecturer

04.07.75 10

basketball

Nick

Shaw

student

03.08.87 5

swimming

Ann

Brook

lecturer

08.04.79 6

swimming

Jane

Fell

student

14.05.83 2

volley-ball

Содержимое файла cars:

BMW

: Paul

: Brown

: 12389

BMW

: Jane

: Tod

: 34567

Chrysler

: Mike

: Bell

: 67890

Chevrolet

: Ben

: Walsh

: 45634

Введите awk-команду awk '{print $1}' sport для вывода первого поля каждой записи файла sport.

Введите awk-команду awk '$1 == "Jim" {print}' sport для вывода всех полей для всех записей, начинающихся с имени «Jim».

Введите awk-команду awk '$1 == "Jim" {print $1,$6}' sport для вывода первого и последнего полей всех записей, начинающихся с имени «Jim».

Запустите ISPF-редактор при помощи команды oedit и создайте файл скрипта awk1, выполняющий задачи, указанные в вашем варианте (вариант получите у преподавателя).

Запуск на исполнение вашего скрипта выполняется по команде awk -f awk1 sport, если вы обрабатываете текстовый файл sport, либо по команде awk -f awk4 cars, если вы обрабатываете текстовый файл cars.

Обращайте внимание на регистр.

Создайте новый подкаталог и назовите его bin. Скопируйте в него все созданные программы с помощью следующих команд: mkdir bin и mv awk* bin.

21

2.7. Создание С-программ

Используя редактор oedit, наберите следующую C-программу и сохраните ее под именем hello.c. Программа имеет вид: #include <stdio.h> main() { printf(“Hello World \n”); }.

С помощью команды c89 hello.c откомпилируйте и скомпонуйте С-программу. Компилятором будут созданы дополнительные файлы с расширениями .o и .out, причем для последнего файла (исполняемого с расширением .out) биты разрешений должны быть установлены следующие: rwxr-xr-x. Запустите программу по команде a.out.

3. ТРЕБОВАНИЯ К ОТЧЕТУ

Отчет о выполнении лабораторной работы должен содержать ответы на контрольные вопросы, скрин-шоты результатов выполнения практических заданий, листинги скриптов в соответствии с полученным студентом вариантом.

Оформление отчета должно быть выполнено в соответствии с требованиями ГОСТ 7.32–2001 «Отчет о научно-исследователь- ской работе. Структура и правила оформления» и ГОСТ 7.1–2003 «Библиографическое описание документов».

4.ВАРИАНТЫ ЗАДАНИЙ

4.1.Варианты заданий для написания Shell-скриптов

Вариант 1. Скрипт «Работа с файлами домашнего каталога». Используя последовательность команд (скрипт) объедините

следующие задачи: вывод содержимого текущего рабочего каталога, сортировка результата по размеру и сохранение данного скрипта в файле mylist.

Вариант 2. Скрипт «Ввод пользователем нужной информации». Напишите скрипт dirlist2, который запрашивает имя дирек-

тории до тех пор, пока оно не будет введено. После этого выводит содержимое данной директории.

Вариант 3. Скрипт «Общение с пользователем».

22

Напишите скрипт, спрашивающий у пользователя его имя и возраст и генерирующий предложение на основании полученных данных. Назовите его hello и запустите.

По команде read считывается значение введенной переменной и присваивается ей. Команда echo может использоваться для вывода сообщения на экран.

Вариант 4. Скрипт «Вывод домашнего каталога».

Напишите скрипт dirlist, который запрашивает директорию для вывода. Если пользователь ничего не вводит, то скрипт выводит домашнюю директорию пользователя.

4.2. Варианты заданий для написания Awk-скриптов

Вариант 1. Напишите Awk-скрипт, который выполняет следующие задачи: для всех записей, начинающихся с «Jim», выполняет вывод первого и последнего полей и для всех записей, начинающихся с «Ann», выполняет вывод второго и третьего полей. В качестве входного файла укажите файл sport.

Вариант 2. Напишите Awk-скрипт, который выводит название каждого поля файла sport. Названия полей: «Name Surname Occupation Date of Birth Expert Sport».

Вариант 3. Напишите Awk-скрипт, который выполняет следующие задачи: подсчет количества человек, занимающихся футболом и плаванием, и вывод результатов. В качестве входного файла укажите файл sport.

Вариант 4. Напишите Awk-скрипт, который выполняет следующие задачи: использует символ «:» в качестве разделителя полей входного файла; осуществляет вывод первого и второго полей, разделенных символом «:», затем вывод второго, третьего и четвертого полей, разделенных символом «,». В качестве входного файла укажите файл cars.

Вариант 5. Напишите Awk-скрипт, который выполняет следующие задачи: использует символ «:» в качестве разделителя полей входного файла; осуществляет чтение всех записей, содержащих заглавную букву С, и вывод этих строк без последнего поля. В качестве входного файла укажите файл sport.

Вариант 6. Напишите Awk-скрипт, который выполняет следующие задачи: использует символ «:» в качестве разделителей

23

полей входного файла; осуществляет чтение всех записей, содержащих заглавную букву С, и вывод этих записей, далее — подсчет суммы по последним полям выведенных строк и вывод результата суммирования. В качестве входного файла укажите файл cars.

КОНТРОЛЬНЫЕ ВОПРОСЫ

1.Чем отличается рабочий каталог от домашнего каталога?

2.Какое название у корневого каталога?

3.Можно ли создать два каталога одной командой?

4.Как последовательно вывести содержимое файла на экран?

5.Как определить размер файла?

6.Что делает команда touch?

7.Является ли жесткая ссылка файлом?

8.Кто создает файл .sh history?

9.Каким образом используются переменные среды?

10.Сколько ID-процессов создается при выполнении конвейера команд?

11.Какой файл хранит параметры интерфейса пользовательской консоли?

12.Как узнать размер свободного пространства в смонтированной файловой системе?

13.Что такое shell-скрипт?

14.Какой командой можно вывести произвольную текстовую строку?

15.Для чего используется язык Awk?

16.Из каких частей состоит Awk-скрипт?

17.С какими типами файлов работает Awk-скрипт?

18.Будет ли Awk-скрипт корректно работать с текстовыми файлами Windows?

19.Как запустить Awk-скрипт?

24

ОТВЕТЫ К ВАРИАНТАМ ЗАДАНИЙ

Номер

 

 

вари-

Задание на написание скриптов

Ответ (скрипт)

анта

 

 

 

 

 

 

Написание Shell-скриптов (см. разд. 4.1)

 

 

Напишите скрипт mylist, который выполня-

 

 

 

 

ет следующие действия: выводит содержи-

ls -l | sort -k5;

1

мое текущего рабочего каталога, сортирует

touch mylist; ls -l

 

результаты по размеру и сохраняет данный

| sort -k5 > mylist

 

скрипт в файле mylist

 

 

 

 

 

Напишите скрипт dirlist2, который выпол-

while test "$1" =

 

няет следующие действия: запрашивает имя

"" do echo Direc-

2

директории до тех пор, пока оно не будет

tory: read dir set

 

введено. После этого выводит содержимое

"$dir" done ls -l

 

данной директории

$dir

 

 

 

 

 

 

Напишите скрипт, спрашивающий у поль-

echo Please

 

зователя его имя и возраст и генерирующий

enter your

 

предложение на основании полученных

name:; read

 

name; echo

 

данных. Назовите его hello и запустите.

3

Please enter

По команде read считывается значение

 

your age: read

 

введенной переменной. Команда echo

 

age echo Hello,

 

может использоваться для вывода

 

$name. You are

 

сообщения на экран

$age years old

 

 

 

 

Напишите скрипт dirlist, который выполня-

echo Directory:

 

ет следующие действия: запрашивает

read dir if test -z

4

директорию для вывода; если пользователь

"$dir" then

 

ничего не вводит, то выводит домашнюю

dir=$HOME fi ls

 

директорию пользователя

-l $dir

 

 

 

 

 

 

Написание Awk-скриптов (см. разд. 4.2)

 

Напишите Awk-скрипт, который выполняет

 

 

 

 

следующие действия: для всех записей,

$1 == "Jim"

 

начинающихся с «Jim», выводит первое

 

{print $1,$6} $1

1

и последнее поле и для всех записей, начи-

== "Ann" {print

 

нающихся с «Ann», выводит второе и

 

$2,$3}

 

третье поле. В качестве входного файла

 

 

 

укажите файл sport

 

 

 

 

 

 

25

 

Продолжение таблицы

 

 

 

 

Номер

 

 

 

вари-

Задание на написание скриптов

 

Ответ (скрипт)

анта

 

 

 

 

 

 

 

 

Написание Awk-скриптов (см. разд. 4.2)

 

 

Напишите Awk-скрипт, который выводит

 

BEGIN {print "

 

 

 

 

Name Surname

 

название каждого поля файла sport. Назва-

 

2

 

Occupation Date

ния полей: «Name Surname Occupation Date

 

 

 

of Birth Expert

 

of Birth Expert Sport»

 

 

 

Sport"} {print}

 

 

 

 

 

 

 

 

 

 

BEGIN {foot-

 

 

 

count = _ swim-

 

 

 

count = _} $6 ==

 

 

 

"football" {foot-

 

 

 

count = foot-

 

Напишите Awk-скрипт, который выполняет

 

count + 1} $6 ==

 

 

"swimming"

 

следующие действия: подсчитывает коли-

 

3

 

{swimcount =

чество человек, занимающихся футболом и

 

 

 

swimcount + 1}

 

 

 

 

плаванием, и выводит результаты

 

END {print foot-

 

 

 

 

 

 

count " people

 

 

 

enjoy football."

 

 

 

print swimcount "

 

 

 

people enjoy

 

 

 

swimming."}

 

 

 

 

 

Напишите Awk-скрипт, который выполняет

 

 

 

следующие действия: использует символ

 

 

 

«:» в качестве разделителя полей входного

 

BEGIN {FS = ":"}

 

файла и выводит первое и второе поля, раз-

 

4

 

{print $1 FS $2 ",

деленные символом «:»; выводит второе,

 

 

 

" $3 ", " $4}

 

третье и четвертое поля, разделенные сим-

 

 

 

 

 

волом «,». В качестве входного файла ука-

 

 

 

жите файл cars

 

 

 

 

 

 

 

Напишите Awk-скрипт, который выполняет

 

 

 

следующие действия: использует символ

 

BEGIN {FS = ":"}

 

«:» в качестве разделителя полей входного

 

5

 

/C/ {print $1 ":"

файла, считывает все записи, содержащие

 

 

 

$2 "," $3}

 

заглавную букву С, и выводит эти строки

 

 

 

 

 

без последнего поля

 

 

 

 

 

 

26

 

 

 

 

Окончание таблицы

 

 

 

 

Номер

 

 

 

вари-

Задание на написание скриптов

 

Ответ (скрипт)

анта

 

 

 

 

 

 

 

 

Написание Awk-скриптов (см. разд. 4.2)

 

 

 

 

 

Напишите Awk-скрипт, который выполняет

 

BEGIN {FS = ":"

 

следующие действия: использует символ

 

 

 

total = _} /C/

 

«:» в качестве разделителей полей входного

 

 

 

{amount =

6

файла; считывает все записи, содержащие

 

substr($4,1) total

заглавную букву С, и выводит эти записи;

 

= total + amount

 

 

 

подсчитывает сумму по последним полям

 

print $_} END

 

выведенных строк и выводит результат

 

{print "The total

 

 

is $"total}

 

суммирования

 

 

 

 

 

 

 

 

ЛИТЕРАТУРА

z/OS UNIX System Service User’s Guide (SC28-1891),Tenth Edition, September 2009. — http://publibz.boulder.ibm.com/epubs/pdf/bpxza4a0.pdf

z/OS Unix System Services Command Reference, Eleventh Edition, September 2009. — http://publibz.boulder.ibm.com/epubs/pdf/bpxza5a0.pdf

27

ОГЛАВЛЕНИЕ

 

ВВЕДЕНИЕ..................................................................................................

3

1. Теоретическая часть.................................................................................

3

1.1. Основы z/OS UNIX............................................................................

3

1.2. Иерархическая файловая система HFS .............................................

6

1.3. Скриптовый язык Awk ......................................................................

8

1.4. Режимы доступа пользователей к z/OS UNIX ..................................

9

2. Практическая часть ................................................................................

11

2.1. Запуск оболочки Shell системных сервисов UNIX .........................

11

2.2. Работа с файлами и каталогами.......................................................

13

2.2.1. Создание и копирование файлов и каталогов ..........................

13

2.2.2. Жесткие и символические ссылки............................................

14

2.2.3. Удаление файлов, каталогов и ссылок .....................................

15

2.2.4. Сортировка файлов ...................................................................

16

2.3. Изучение основных команд оболочки Shell....................................

17

2.4. Настройка оболочки Shell................................................................

20

2.5. Написание Shell-скриптов ...............................................................

20

2.6. Написание Awk-скриптов................................................................

21

2.7. Создание С-программ......................................................................

22

3. Требования к отчету...............................................................................

22

4. Варианты заданий ..................................................................................

22

4.1. Варианты заданий для написания Shell-скриптов...........................

22

4.2. Варианты заданий для написания Awk-скриптов ...........................

23

Контрольные вопросы ...............................................................................

24

Ответы к вариантам заданий .....................................................................

25

Литература .................................................................................................

27

28

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