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.


 

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

34282. Изменчивость 48.89 KB
  На основе изменчивости организмов появляется генетическое разнообразие форм которые в результате действия естественного отбора преобразуются в новые виды. Виды: Ненаследственная модификационная фенотипическая В результате изменение условий среды организм изменяется в пределах НОРМЫ РЕАКЦИИ это пределы рамки в которых возможно изменение признака у денного генотипа например норма реакции молочности у коров колеблется от 1000 до 2500 кг заданной генотипом. 2 Наследственная генотипическая а...
34283. Гипотезы происхождения эукариотических клеток 194 KB
  Согласно симбиотической гипотезе популярной в настоящее время корпускулярные органеллы эукариотической клетки имеющие собственный геном характеризуются независимым происхождением и ведут начало от прокариотических клетоксимбионтов. Первоначально объем информации и геномах клеткихозяина с одной стороны и симбионтов презумптивных митохондрий центриолей и хлоропластов с другой был повидимому сопоставим. В дальнейшем могла произойти утрата геномами симбионтов части генетических функций с перемещением блоков генов в геном...
34284. Медицинская экология. Предмет, содержание, задачи и методы. Появление нового типа заболеваний человека – экологически зависимых болезней 13.29 KB
  Появление нового типа заболеваний человека экологически зависимых болезней. Медицинская экология пытается установить причину заболеваний в непосредственной связи с окружающей средой при этом учитывается большое разнообразие экологических факторов нозологических форм заболеваний и генетических особенностей человека. Появился новый тип заболеваний человека который можно назвать экологически обусловленными заболеваниями или как их иногда называют экологически зависимыми экологически связанными заболеваниями. Хронических...
34285. Мута́ция 22.01 KB
  Изменение числа генов: гаплоидия кратное уменьшение числа хромосом у потомства полиплоидия геном представлен 2 наборами хромосом различают аллополиплоидов имеются наборы хромосом полученные при гибридизации от разных видов и аутополиплоидов происходит увеличение числа наборов хромосом собственного генома кратное n. анеуплоидия гетероплоидия изменение числа хромосом не кратное гаплоидному набору 2. Изменение числа хромосом: моносомия отсутствие в хромосомном наборе диплоидного организма одной хромосомы полисомия...
34286. Общая периодизация и характеристика основных этапов постэмбрионального онтогенеза 56 KB
  Влияние генетических факторов условий и образа жизни на процесс старения. Влияние факторов Ряд наблюдений легли в основу достаточно распространенной точки зрения о наследуемости продолжительности жизни и следовательно наличии генетического контроля или даже особой генетической программы старения. Вопервых максимальная продолжительность жизни ведет себя как видовой признак.Описаны наследственные болезни с ранним проявлением признаков старости и одновременно резким сокращением продолжительности жизни.
34287. Онтогене́з 31 KB
  Постэмбриональное развитие Постэмбриональное развитие бывает прямым и непрямым. Прямое развитие развитие при котором появившийся организм идентичен по строению взрослому организму но имеет меньшие размеры и не обладает половой зрелостью. Дальнейшее развитие связано с увеличением размеров и приобретением половой зрелости.
34289. Старение 16.82 KB
  Опыты показывали что вытяжка из семенников молодого организма повышала тонус у старого. источник толстая кишечник в нём гнилостные процессы азотистый обмен самого организма. биологические часы 1вилочковая железа прекращает работу при переходе организма в зрелый возраст 2нервная система гипоталамус симпатическая нервная система Долгожители старше 90 лет; долгожительство характеризует определенные этнические группы проживающие в основном в сельской местности. Биологический смысл старения заключается в том что оно делает...
34290. Регенерация. Виды регенерации 16.32 KB
  Виды: физиологическая восстановление органов тканей клеток после разрушения их в процессе жизнедеятельности организма непрерывное восстановление структур на клеточном тканевом и внутриклеточном уровнях; благодаря физиологической регенерации поддерживается структурный гомеостаз и обеспечивается возможность постоянного выполнения органами их функций; самообновление пролиферативная регенерация вид физиологической; восполнение численности клеток за счет их деления обновление производных эпидермиса волосы ногти...