65839

ОСНОВЫ РАБОТЫ С ТЕКСТОВЫМ РЕДАКТОРОМ AWK И ЯЗЫКОМ ПРОГРАММИРОВАНИЯ PERL

Лабораторная работа

Информатика, кибернетика и программирование

Цель работы — изучение возможностей, предоставляемых интерактивным текстовым редактором AWK из состава ОС UNIX, а также ознакомление с языком программирования Perl. Использованные теоретические сведения В ходе выполнения лабораторной работы были использованы теоретические...

Русский

2014-08-09

38.48 KB

2 чел.

Министерство образования и науки Российской Федерации

Санкт-Петербургский государственный политехнический университет

Факультет технической кибернетики

Кафедра «Информационная безопасность компьютерных систем»

ОТЧЕТ

по лабораторной работе №2

«ОСНОВЫ РАБОТЫ С ТЕКСТОВЫМ РЕДАКТОРОМ AWK И ЯЗЫКОМ ПРОГРАММИРОВАНИЯ PERL»

по курсу «Операционные системы»

Выполнил

студент гр. 2088/4    А.А.Чернышев

                           <подпись>

Руководитель     А.С. Коноплев

                           <подпись>

Санкт-Петербург

2011

  1.  Формулировка задания

Цель работы — изучение возможностей, предоставляемых интерактивным текстовым редактором AWK из состава ОС UNIX, а также ознакомление с языком программирования Perl.

  1.  Использованные теоретические сведения

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

3. Результаты работы

3.1. Выполнение индивидуального задания

1) Разработать Perl скрипт для анализа готового файла журнала аудита (формат файла приведен в примере).

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

  1.  сгруппировывать события по дате;
  2.  выводить статистику событий в журнале, а именно:
  3.  количество событий от разных пользователей
  4.  количество событий в зависимости от типа события
  5.  количество событий по типу read;
  6.  удалять строки, содержащие определенную дату события, которая задается переменной в скрипте;
  7.  выполнять проверку упорядоченности последовательности записей по меткам времени и их сортировку.

Perl-script:

#!/usr/bin/perl

open(LOG, "<$ARGV[0]") || die "File not found!";

@log = <>;

close(LOG);

@logdate = sort @log;

foreach $line (@logdate) {

       $line =~ s/\n//g;

       ($date, $time, $user, $type, $param) = split '\t', $line;

       $dd{$date} = $dd{$date}.$line."\n";

$tp{$type}++; #= $tp{$type}.$line."\n";

       $us{$user}++;

       $lon++ if $type eq "read";

}

print "\n\t\t=============Days: ============\n";

while (($date, $line) = each(%dd)) {

   print "\t\t-----For the $date: ------\n\t$line";

}

print "\n\t\t=============Events: =============\n";

while (($type, $n) = each(%tp)) {

   print "\tNumber of $type - $n\n";

}

print "\n\t\t=============Users: =============\n";

while (($u, $n) = each(%us)) {

   print "\tNumber of $u s events - $n\n";

}

print "\n\t\t=============Reads: =============\n   \tNumber of reads: $lon\n";

print "\n\t\t======Without 13.10.2002: =======\n";

foreach $line (@logdate){  

       $line =~ s/\n//g;

       ($date, $time, $user, $type, $param) = split '\t', $line;

if ($date != "13.10.2002"){ print "\t$line\n\n";}

}

2) Проделать вышеприведенное задание с помощью редактора AWK.

BEGIN{ FS = "\t"}

{all_records[NR] = $0; N++;}

END {

print("\n\t\t=============Days: ============\n\n");

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

{

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

{

 if (all_records[j] > all_records[j + 1])

 {

  t = all_records[j];

  all_records[j] = all_records[j + 1];

  all_records[j + 1] = t;

 }

}

}

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

{

 

 ni++;

 sorted_records[ni] = all_records[i];

 prev = all_records[i];

 print all_records[i];

 split (all_records[i], a); # разделение строки на поля

 days[a[1]]++;

 if (a[1] != prev_date) # если дата != предыдущей

 {

  prev_date = a[1];

 }

 

}

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

{

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

{

 split(sorted_records[j], a1); # массив a1 отвечает да j-ую строку

 split(sorted_records[j + 1], a2); # массив a2 отвечает да (j+1)-ую строку

 if (a1[4] > a2[4])

 {

  t = sorted_records[j];

  sorted_records[j] = sorted_records[j + 1];

  sorted_records[j + 1] = t;

 }

}

}

prev = "";

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

{

split(sorted_records[i], a);

 users[a[3]]++; # подсчёт событий по пользователям - 3е поле

 if (a[4] == "logout") logout++; # подсчёт logout

if (a[4] == "login") login++;

if (a[4] == "open") open++;

if (a[4] == "read") read++;

if (a[4] == "write") write++;

if (a[4] == "exec") exec++;

}

print("\n\t\t=============Events: =============\n");

print "Number of logouts: " logout; # вывод количества событий типа logout

print "Number of logins: " login;

print "Number of open: " open;

print "Number of read: " read;

print "Number of write: " write;

print "Number of exec: " exec;

print "\n\t\t=============Users: =============\n"

for (i in users) print i ":\t " users[i]; # вывод количества событий

#пользователя

print "\n\t\t=============Reads: =============\n"

print "Number of read: " read; # вывод количества событий

#пользователя

print "\n\t\t====Days without 13.10.2002: ====\n"

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

{

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

{

 if (all_records[j] > all_records[j + 1])

 {

  t = all_records[j];

  all_records[j] = all_records[j + 1];

  all_records[j + 1] = t;

 }

}

}

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

{

 

 ni++;

 sorted_records[ni] = all_records[i];

 split (all_records[i], a); # разделение строки на поля

 days[a[1]]++;

 if (a[1] != 13.10.2002)

 {

  print "\t" a[1] "\t" a[2] "\t" a[3] "\t" a[5];

 }

 

}

}

3) Используя скриптовый язык Perl, разработать программу, которая осуществляет просмотр текущего каталога и выводит на экран его содержимое группами в порядке возрастания

#!/usr/bin/perl

while($file = <*>) {   

$nlink = (stat($file))[3];  

    

$group{$nlink} .= "\t$file\n";

}

for $key (sort {$a <=> $b} keys %group) {

print "$key link(s):\n$group{$key}\n";

}

3.2. Ответы на контрольные вопросы

Для каких строк выполняется действие, если в шаблоне указывается одновременно два шаблона?

Какие управляющие конструкции доступны при программировании в AWK?

Язык AWK предоставляет пользователю следующие управляющие конструкции:

Ifelse, while, for. В принципе данные операторы аналогичны тем, что применяются в языке С. Их вид:

If (условие) оператор1 else оператор2

While (условие) оператор

For (выражение1; условие; выражение 2) оператор

Какие операторы ввода/вывода есть в Perl?

В Perl существует несколько операторов ввода-вывода. Первый это скобки из символа '`' - акцента. Строка в этих скобках воспринимается как системная команда, и результат ее действия возвращается как "псевдо" литерал. В скалярном контексте, это строка, содержащая весь результат, а в списковом - список, элементы которого - строки результата. Статус выполненной команды хранится в переменной $?.

Следующая команда ввода вывода выглядит как '<файл>'. Вычисление <файл> приводит к чтению строки из файла. Обратите внимание, что 'файл' здесь не имя файла, а указатель файла, который создается функцией open(). В скалярном контексте читается одна строка вместе с символом '\n' - перевода строки, а в списковом весь файл читается в список, элементы которого суть строки файла. В

случае обнаружения конца файла результат оператора не определен ивоспринимается как false.  Если не указана переменная результата, то по умолчанию это $_. Указатель файла по умолчанию STDIN - стандартный ввод.

Почему в Perl не существует типов «строка» или «число» или «файл»?

Perl – контекстно зависимый полиморфный язык для работы с текстами.

  1.  Выводы

В ходе выполнения лабораторной работы были изучены основы работы с текстовым редактором AWK и языком программирования PERL.


 

А также другие работы, которые могут Вас заинтересовать

12889. Психологическое здоровье. Мое настроение 42 KB
  Психологическое здоровье. Мое настроение. Классный час для 7го класса Цель: формирование убеждения о значении настроения в психическом здоровье человека необходимости уметь произвольно контролировать и регулировать свое настроение. Задачи: пробудить стремле
12890. Классный час Мой жизненный путь 32 KB
  Классный час Мой жизненный путь Цель: отработка практически полезного навыка в построении перспективного плана. Образовательный аспект: расширить понятийный аппарат учащихся что позволит им более четко определить ценности на которых строиться жизнь. Воспитатель...
12891. Урок. Кто есть кто в Камелоте 36 KB
  Кто есть кто в Камелоте Рыцарь не прилагает стараний к тому чтобы казаться. Он есть П. Коэльо Ведущий кратко рассказывает легенду о короле Артуре и рыцарях круглого стола затем предлагает отправиться в путешествие в то время. Разогрев Рыцарские скачки...
12892. Методические основы лагеря Лидерство 81 KB
  Методические основы лагеря Лидерство Лагерь Лидерство это тренинг коммуникативной компетенции. Тренинг который проводят любители по всем классификациям психологов тренинги бывают профессиональные и любительские. В качестве тренеров выступает команда стар
12893. Классный час «Откуда берутся бездомные животные» 46 KB
  Классный час Откуда берутся бездомные животные Ход занятия Ребята послушайте какое письмо мы получили от ученицы одной из школ Жалобными глазами глядя на прохожих смотрит маленький щенок надеясь что он найдет своих хозяев. Ведь не так недавно он жил с люд
12894. КОНЦЕПЦИЯ ЗАЩИТЫ НАСЕЛЕНИЯ ОТ ЧРЕЗВЫЧАЙНЫХ СИТУАЦИЙ ПРИРОДНОГО, ТЕХНОГЕННОГО И ТЕРРОРИСТИЧЕСКОГО ХАРАКТЕРА 261 KB
  КОНЦЕПЦИЯ ЗАЩИТЫ НАСЕЛЕНИЯ ОТ ЧРЕЗВЫЧАЙНЫХ СИТУАЦИЙ ПРИРОДНОГО ТЕХНОГЕННОГО И ТЕРРОРИСТИЧЕСКОГО ХАРАКТЕРА И ОТ ОПАСНОСТЕЙ ВОЗНИКАЮЩИХ ПРИ ВЕДЕНИИ ВОЕННЫХ ДЕЙСТВИЙ ИЛИ ВСЛЕДСТВИЕ ЭТИХ ДЕЙСТВИЙ Концепция представляет собой систему взглядов на организац
12895. ИНЖЕНЕРНОЕ ОБЕСПЕЧЕНИЕ МЕРОПРИЯТИЙ ПО ЗАЩИТЕ НАСЕЛЕНИЯ И ТЕРРИТОРИЙ В ЧС 3.36 MB
  Инженерное обеспечение мероприятий по защите населения и территорий в чс Учебное пособие Оглавление [1] Предисловие [2] Глава 1. Инженерные мероприятия РСЧС и ГО [2.1] 1.1. Инженерные мероприятия Р
12896. Вибір є завжди у кожного з нас. Життя без алкоголю, наркотиків та тютюну 399.01 KB
  Виховна година на тему: Вибір є завжди у кожного з нас. Життя без алкоголю наркотиків та тютюну Мета. Розглянути і обговорити на засіданні круглого столу історію виникнення і поширення шкідливих звичок у суспільстві проаналізувати ситуацію з даної проблеми в н...
12897. Невід’ємне право на життя. Алгоритм поведінки в суспільстві законослухняної особистості 22.85 KB
  Тема : Проведення профілактично виховної бесіди Невідємне право на життя. Алгоритм поведінки в суспільстві законослухняної особистості Місце проведення: Спортивна секція з рукопашного бою ОФРБ приміщення спортивного залу Миколаївського НВК Світанок. ...