65839

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

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

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

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

Русский

2014-08-09

38.48 KB

1 чел.

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

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

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

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

ОТЧЕТ

по лабораторной работе №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.


 

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

12321. Состояние имиджа интернет-магазина 6cotok.ru и пути его совершенствования 654.5 KB
  Благодаря «имиджу», появилась такая профессия, которая приобретает популярность, как «имиджмейкер». Имиджмейкер – это специализированный сотрудник по связям с общественностью, который разрабатывает и создает специальные рекламные мероприятия, для повышения имиджа организации.
12322. Саясаттанудың заңдары мен категориялары, әдістері мен функциялары 284.5 KB
  САЯСАТТАНУ ҒЫЛЫМ РЕТІНДЕ Саясаттанудың объектісі мен пәні Саясаттанудың заңдары мен категориялары әдістері мен функциялары 1. Саясатты түсіну ежелден бастау алады. Оны ғылыми тұрғыда шешу кейінгі ғасырларға келеді. Саяси ғылым қазіргі кездегі мәнін Х...
12323. Никола Макиавелли 25.77 KB
  СӨЖ Тақырыбы: Никола Макиавелли Никола Макиавелли Қайта өрлеу дәуірінің көрнекті өкілі буржуазиялық саяси ілімінің негізін қалаушы Никола Макиавелли саяси қайраткер дипломат және тарихшы ретінде де кеңінен танылады. Мемлекет және құқық концепциясы тарихын
12324. Әлемдік әлеуметтанудың қалыптасуы мен даму тарихы 132.16 KB
  ІІ дәріс. Әлемдік әлеуметтанудың қалыптасуы мен даму тарихы. 1. Антикалық және Ортағасыр дәуіріндегі әлеуметтік ойлар. 2. Жаңа заман мен Ағартушылар дәуіріндегі әлеуметтік тұжырымдамалар. 3. Әлеуметтану ғылымының классика...
12325. Саясаттану пәнінен 1-аралық бақылау сұрақтары 43.18 KB
  Саясаттану пәнінен 1аралық бақылау сұрақтары Саясаттану ғылым ретінде Саясаттану ғылымының атқаратын қызметтері Саяси ойшылдардың саясатқа берген анықтамалары Саясаттанудың деңгейлері Саясаттанудың парадигмалары Ежелгі дәуірдегі саяси ойшылд
12326. Эмпирикалық әлеуметтану бойынша глоссарий 15.16 KB
  Эмпирикалық әлеуметтану бойынша глоссарий Эмпирикалық әлеуметтану нақты зерттеулер жүргізуді осылардың негізінде арнаулы әдістер қолдану сұрау бақылау тәжірибе арқылы жаңа фактілерді жинап талдауды қорытындылауды айтады Интервью көсемсөз жанры журналист
12327. Тақырыбы: Томас Джефферсонның саяси-құқықтық көзқарасы 43.85 KB
  СӨЖ Тақырыбы: Томас Джефферсонның саясиқұқықтық көзқарасы АҚШ тарихы ХVІІІ ғасырдың соңғы ширегі мен ХІХ – ғасырлардың басында әлемге көрнекті саңлақтар тобын берді. Олар әр қилы көзқарасты ұстанып әр түрлі партиялардың құрамында болғанымен барлығы да америка
12328. Саяси процесс туралы ұғым 54 KB
  Саяси процесс туралы ұғым Саяси процесс ұғымы кең және тар мағынасында қолданылады. Кең мағынасында ол коғамның саяси жүйесінің уакыт пен кеңістікте дамып жұмыс істеуін білдіреді. Тар мағынасында түпкілікті нақты нәтижеге жеткен белгілі бір көлемдегі процесті көрсет
12329. Аралық бақылау сұрақтары 472.21 KB
  I IIаралық бақылау сұрақтары 1.Социология дегеніміз қандай ғылым. 2.Социологиялық ұғымдарлың ерекшеліктері. 3.Социологиялық парадигмалардың сипаттамалары. 4.Социологияның өмірге келуінің саяси әлеуметтік экономикалық рухани алғышарттары. 5.Социологияның атқара...