Поиск подстроки в текстовом файле (grep) 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Поиск подстроки в текстовом файле (grep)



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

Результат должен выводиться в виде:

123:строка текста

где 123 – номер строки в файле, “строка текста” – содержимое этой строки.

 

Программа для просмотра файлов (more)

Написать программу, выполняющую просмотр и прокрутку указанного текстового файла.

 

Вывод дерева каталогов (tree)

Вывод дерева каталогов, начиная с текущего или указанного.

Аналогично команде TREE MS-DOS.

 

Мониторинг лог файлов (tail -f)

Программа для мониторинга лог файлов.

Выводит указанный текстовый файл на терминал. Далее в цикле ожидает увеличения размера файла и выводит добавившиеся строки на терминал.

 

Сортировка текстового файла (sort)

Разработка программы-фильтра выполняющую сортировку строк текстового файла в порядке возрастания или убывания (в зависимости от ключа командной строки). Файл должен читаться с потока стандартного ввода. Результат печататься на поток стандартного вывода.

 

Перекодировка текстового файла из одной кодировки в другую

Разработка программы-фильтра выполняющую перекодировку текстового файла из кодировки cp866, windows-1251, koi8-r в другую из того же набора (в зависимости от ключей командной строки). Файл должен читаться с потока стандартного ввода. Результат печататься на поток стандартного вывода.

 

Задания средней сложности

Динамические структуры в UNIX

Реализовать следующие структуры:

a) список с одиночными связями,

b) список с двойными связями,

c) бинарное дерево,

d) стек,

e) простую очередь,

f) циклическую очередь.

 

Декодирование почтовых форматов

Декодировать и распечатать файл в формате:

а) uuencode

б) quoted-printable

в) base64

 

Псевдографические стрелочные часы

Написать программу, выводящую на терминале (включая telnet/ssh терминал) псевдографические стрелочные часы с секундной стрелкой.

Использовать информацию о типе терминала в переменной окружения TERM, управляющие последовательности из файла termcap. Возможно использование библиотеки ncurses(3) или аналогичной.

 

2.4. TCP сервис “изменение регистра строк”

Напишите программу, которая занимает заданный порт TCP, ожидает установления соединения, принимает данные, переводит все символы латинского алфавита в верхний регистр и отправляет данные обратно.

Подсказка: см. toupper(3).

 

Сканер TCP портов

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

 

Пересылка файлов по TCP

Напишите программу N1, которая запрашивает у пользователя IP адрес, номер порта и имя файла, устанавливает TCP соединение с указанным адресом, и передает заданный файл.

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

Задание могут выполнять два студента. При этом каждый пишет отдельную программу.

 

Служба информации о системе

Сделать доступным в сети информацию о состоянии операционной системы (загрузка системы, активные пользователи, заполненность дисков) двумя способами: с использованием inetd и как пользовательский login.

 

Двухпоточные вычисления

Написать программу, порождающую двух потомков.

Первый потомок вычисляет простые числа от 2 до 1e9. Второй каждые 5 секунд вычисляет случайное число из диапазона 0…1e9. Оба потоска передают вычисленные значения родителю через pipe.

Родитель печатает получаемые от потомков значения на теринал в виде:

Simple: 2

Random: 431

При завершении родителя комбинацией клавиш Ctrl-C, он заверншает выполнение потомков отправкой сигнала SIGTERM и завершает свое выполнение.

 

Просмотр текстовых файлов (more)

Написать программу, выполняющую просмотр и прокрутку (вверх и вниз) указанного текстового файла. Вывод строки статуса (имя файла, размер в байтах и строках, текущая позиция).

 

Дерево выполняющихся процессов

Вывести дерево выполняющихся в системе процессов.

Каждый процесс подсоединяется к своему родителю.

Если родителя нет, процесс считается корнем отдельного дерева, которое выводиться после основного дерева (с корневым процессом init, pid=1).

 

Задания высокой сложности

Web сервер

Написать программу-сервер, которая принимает запросы по порту 10000 и выдает содержимое указанного в запросе файла. В качестве протокола взаимодействия сервера и клиента использовать подмножество протокола HTTP (запрос GET). Реализовать сообщение о недоступности файла (“404 Not Found”) и просмотр оглавления каталога (при запросе каталога выдается находящейся в этом каталоге файл index.html). Использовать стандартные функции организации соединения TCP/IP: socket(), bind(), linsten(), accept(), read(), write().

 

Пример взаимодействия:

Запрос:

GET /index.html HTTP/1.0

 

Ответ:

HTTP/1.1 200 OK

Server: 99soft server v1.0

Content-Length: 229

Content-Type: text/html

(пустая строка)

<html><body>test</body></html>

 

Командный интерпретатор (shell)

Создать командный интерпретатор, обеспечивающий:

a) навигацию по файловой системе (“cd”)

b) запуск задач

c) переназначение ввода/вывода (“>”, “>>”, “<”)

d) запуск конвейеров (“|”)

 

Определение кодировки русского текста

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

Краткое описание метода:

1) Получение вектора с частотой символов с кодами 128-255

2) Нормирование вектора встречаемых символов

3) Сравнение с эталонными векторами для кодировок cp866, windows-1251, koi8-r.

4) Вывод названия кодировки, с наименьшим расстоянием между полученным вектором и эталонным. В малой вероятности определение кодировки, выдать сообщение об этом.

 

Чат-сервер

Многопользовательский чат-сервер.

Написать программу сервер и клиентскую программу.

Сервер запускается одним из пользователей или при запуске системы.

Клиентские программы запускаются пользователями на их терминалах (на той же машине, что и сервер).

Взаимодействие клиентов и серверов можно реализовать на одном из видов IPC или посредством сетевого взаимодействия.

Как и в задании 3.3 реализовать работу на различных видах терминалов.

 

3.5. “Транспьютер”

Создать вычислительную сеть из сервисов, выполняющих элементарные вычисления.

Сервисы создаются посредством вызова функции fork(). Передача параметров может выполняться через одно из средств IPC.

Возможно выполнение разными студентаи этого задания и использованием различных средств IPC.

 

Пример.

Вычисление выражения:

a*b+c/d

 

Создается вычислительная сеть из 3-х элементов: (1), (2), (3) на схеме.

В головную программу загружаются вектора значений переменных.

Из головной программы (0) значения переменных передаются в вычислительную сеть.

Результат вычислений из сети передается в головную программу (0) и выводятся на экран.

 

(0)

a b c d

ß ß ß ß

(1 *) (2 /)

¯ ¯

(3 +)

¯

(0)

 

Распределенные вычисления

Сделать систему, выполняющую распределенные вычисления задачи переборного типа.

 

Например, система вычисления всех простых чисел из диапазона 2…1e9.

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

Необходимо создать сервер, который должен обеспечить проверку всего диапазона чисел. Для проведения вычислений сервер выдает небольшие диапазоны (например по 10000 чисел) для проверки вычислителям, получает от них найденные простые числа и сохраняет их в файле.

Сервер принимает подключения клиентов на определенном порту TCP. По окончании проверки всего диапазона завершает работу.

Клиент-вычислитель соединяется с сервером. Получает диапазон для вычислений (два числа). Проводит вычисления и отсылает найденные числа серверу. По окончании вычислений закрывает соединение и подключается снова. В случае невозможности подключения клиент прекращает попытки.

Сервер должен работать на unix машине.

Клиенты могут работать на любых ОС.

 



Поделиться:


Последнее изменение этой страницы: 2016-04-18; просмотров: 238; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.133.86.172 (0.017 с.)