Практическая работа №5. Текстовый процессор awk

Опубликовано пользователем Бессонов Л.В. 14.11.2009г.

Цель работы

Ознакомление с языком программирования текстового процессора awk.

Теоретические материалы

  1. awk - программируемый текстовый процессор

Выполнение работы

Выполняя предыдущую работу, Вы, возможно, не раз посетовали на отсутствие в элементарных фильтрах *nix вычислительных и логических возможностей. Этот недостаток компенсируется в утилите awk, которая, являясь одной из утилит, работающих с регулярными выражениями, в то же время предоставляет программисту алгоритмические и вычислительные возможности, базирующиеся на синтаксисе языка C. Как вы увидите ниже, многие из тех предыдущих задач, для решения которых нам приходилось создавать длинные конвейерные цепочки команд, могут быть решены одним обращением к утилите awk.

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

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

В задаче 1 выполните при помощи awk ту же обработку текстового файла, которую Вы выполняли в Задаче 1 работы №4.

В задачах 2,3 выполните при помощи awk обработку файлов query[1-5], в соответствии с Вашим вариантом индивидуального задания.

Индивидуальные варианты

Вариант 1

  1. В созданном для практической работы №4 текстовом файле перенести третью от конца строчку в начало файла
  2. В файле query1 определить среднюю зарплату продавцов ("SALESPERSON")
  3. В файле query2 определить трех покупателей, которым предоставлены наибольшие кредиты

Вариант 2

  1. В созданном для практической работы №4 текстовом файле перенести третью от начала строку в конец файла
  2. В файле query2 определить средний кредит для каждого штата
  3. В файле query3 определить 5 самых дорогих товаров (по максимальной цене)

Вариант 3

  1. В созданном для практической работы №4 текстовом файле перед каждой строкой вставить текущее время
  2. В файле query4 определить среднюю сумму заказа для 1990 г.
  3. В файле query4 определить количество продаж для каждого продавца

Вариант 4

  1. В созданном для практической работы №4 текстовом файле удалить вторую строку, начинающуюся с буквы 'Н'
  2. В файле query1 определить количество сотрудников на каждой должности
  3. В файле query1 определить отделы, в которых нет менеджеров ("MANAGER")

Вариант 5

  1. В созданном для практической работы №4 текстовом файле оставить в каждой строке не более двух слов. Слова, выходящие за этот предел поместить в отдельный файл. В первом файле-результате в тех строках, которые содержат менее двух слов, в конец строки должен быть добавлен символ '='. Во втором файле-результате пустых строк оставаться не должно, а перед непустыми строками должны быть указаны их номера в исходном файле, отделенные от остального текста одним пробелом
  2. В файле query1 определить общее число отделов в фирме
  3. В файле query3 считая, что первое слово в названии товара - название фирмы, определить число товаров каждой фирмы

Вариант 6

  1. В созданном для практической работы №4 текстовом файле оставить в каждой строке не более 2-х слов. Остаток перенести в следующую строку. Если вторая строка в паре оказывается пустой - печатать в ней символ '='
  2. В файле query2 определить покупателей, у которых в адресе указана улица или т.п. ("ST.", "RD.", etc.), и их количество
  3. В файле query3 определить товары, максимальная цена которых больше 20, и средний процент по ним

Вариант 7

  1. В созданном для практической работы №4 текстовом файле первый символ каждой строки заменить на первый символ предыдущей строки. Первая строка остается без изменений
  2. В файле query3 определить товары, в названии которых фигурирует "BALL", и их общее количество
  3. В файле query2 определить города, в которых есть более одного покупателя

Вариант 8

  1. В созданном для практической работы №4 текстовом файле поменять местами два первых и два последних символа каждой строки
  2. В файле query1 определить города, в которых есть отделы "SALES"
  3. В файле query4 определить три самых больших заказа

Вариант 9

  1. В созданном для практической работы №4 текстовом файле поменять местами первую и последнюю строки файла
  2. В файле query1 определить максимальную зарплату менеджеров
  3. В файле query2 определить для каждого штата покупателя с максимальным кредитом

Вариант 10

  1. В созданном для практической работы №4 текстовом файле после строк, которые заканчиваются точкой или запятой, вставить пустую строку
  2. В файле query1 определить трех сотрудников, получающих самую высокую зарплату
  3. В файле query3 считая, что первое слово в названии товара - название фирмы, определить фирмы, все товары которых выставлены в продажу в один день

Вариант 11

  1. В созданном для практической работы №4 текстовом файле перенести последнее слово в каждой строке в новую строку. Для строк, состоящих из одного слова - не делать ничего
  2. В файле query1 определить сумму зарплаты, которая встречается чаще других
  3. В файле query3 считая, что первое слово в названии товара - название фирмы, определить фирмы, все товары которых выставлены в продажу в один день

Вариант 12

  1. В созданном для практической работы №4 текстовом файле перенести первое слово каждой строки в начало следующей строки
  2. В файле query1 определить разность между максимальной и минимальной зарплатой
  3. В файле query2 определить для каждого штата число покупателей, в названии которых есть "SPORT"

Вариант 13

  1. В созданном для практической работы №4 текстовом файле во всех четных строках перенести первое слово строки в конец строки. Строки, содержащие только одно слово, не изменяются
  2. В файле query2 определить число покупателей для каждого штата
  3. В файле query3 определить товар/товары, который появился в продаже последним

Вариант 14

  1. В созданном для практической работы №4 текстовом файле во всех нечетных строках перенести последнее слово строки в начало строки. Строки, содержащие только одно слово, не изменяются
  2. В файле query2 определить разность между максимальной и минимальной суммой кредита
  3. В файле query3 определить количество товаров, выставленных в каждом месяце (с учетом года)

Вариант 15

  1. В созданном для практической работы №4 текстовом файле поменять местами четные строки с нечетными
  2. В файле query4 определить разность между максимальной и минимальной суммой заказа
  3. В файле query2 определить первые две цифры почтового индекса для каждого штата

Баннер SGU.RU