Лабораторная работа №9. Фильтры, обработка текстовых данных
Ход работы
1. Выведите краткую информацию о всех блок-ориентированных файлах каталога /dev в файл devinfo домашнего каталога. Добавьте в конец этого файла полную информацию об этих устройствах.
2. Выведите только имена файлов домашнего каталога в файл lstest. Используя перенаправление ввода, просмотрите информацию о дисковом пространстве, которое занимает каждый файл, имя которого записано в файле lstest.
3. Определите количество файлов, с именем README, находящихся в файловом дереве, начиная с каталога /usr/share/doc. (Указание: используйте команду wc).
4. Используя группировку команд, выведите в файл diffhelp справочные данные, получаемые по команде man, о командах find, egrep и chmod. Просмотрите файл diffhelp в постраничном режиме.
5. Осуществите поиск всех файлов в файловом дереве, начиная с каталога /usr/lib, с выводом информации в файл lib_info и выводом ошибок на фиктивное устройство.
6. Осуществите в файловом дереве, начиная с каталога /usr/lib, поиск файлов, имя которых начинается на n или m, с выводом информации в файл lib_info2 и выводом ошибок в файл lib_error.
Цель работы: освоить приемы обработки строк текстовых файлов.
sort [ключи] [файл(ы)] — сортирует строки текстовых файлов и отправляет результат на стандартный вывод. Если файлов несколько, то они объединяются. Некоторые ключи:
-b — игнорировать пробелы в начале сортируемых полей или ключей;
-f — сортировка, нечувствительная к регистру;
-r — сортировка в обратном порядке;
-o файл — вывод результата в указанный файл;
-n — числовая сортировка (используется совместно с ключом -b).
tr [ключи] строка1 [строка2] — выполняет подстановку, замену, сокращение или удаление символов, поступающих со стандартного ввода и отправляет результат на стандартный вывод. Обычно эта команда имеет два аргумента: между наборами символов строка1 и строка2 устанавливается соответствие, после чего происходит замена набора строка1 на строка2. Некоторые ключи:
-d — удаляет символы, перечисленные в наборе строка1;
-s — заменяет несколько одинаковых подряд идущих символов на один такой же.
Если строка2 короче строки1, то строка2 удлиняется до длины строки1 повторением своего последнего символа. Лишние символы строки2 игнорируются. Строка1 и строка2 должны быть только диапазонами и последовательностями символов, либо отдельными символами:
символ1-символ2 — диапазон символов (без квадратных скобок!);
[:almun:] — все буквы и цифры;
[:alpha:] — все буквы;
[:cntrl:] — все управляющие символы;
[:digit:] — все цифры;
[:lower:] — все буквы нижнего регистра:
[:upper:] — все буквы ВЕРХНЕГО регистра.
[:graph:] — все печатаемые символы, исключая пробел;
[:print:] — все печатаемые символы, включая пробел.
Примеры:
tr -s "[:alpha:]" < file.in > file.out — устранение повторяющихся букв в файле file.in и запись результата в файл file.out.
tr "a-k" "a-d" < file.in > file.out — все символы с e по k будут заменены на символ d (вторая строка была расширена).
cut [опции] [файл] — выделяет части строк текста (столбцы) из каждого файла и отправляет в стандартный поток вывода. Часть строк определяется либо по смещению в символах, либо по разделителям. Если файл не указан, данные поступают со стандартного ввода. Список опций:
-f список — выводит только столбцы (поля), указанные в списке. Список представляет один или более номеров символов или диапазонов, разделенных запятой, например, 7-10,15,40-50;
-d разделитель — задает разделитель колонок (полей) входного файла. Применяется совместно с ключом -f. Разделитель должен быть одним символом;
-c список — выводит только символы из позиций, указанных в списке. Формат задания списков аналогичен ключу -f.
Примеры:
cut -f 3-5 myfile — вывод с 3 по 5 поле каждой строки файла myfile.
cut -d ":" -f 2,4 myfile — вывод 2 и 4 полей каждой строки файла myfile, в котором разделителем является двоеточие.
Ход работы
1. Сформируйте файл user_list, в котором содержится информация о всех зарегистрированных в системе пользователях (воспользуйтесь командой who). Сформируйте файл user_list_sort, содержащий отсортированные в обратном порядке данные о пользователях.
2. Выведите на экран файл user_list_sort с преобразованием символов в верхний регистр.
3. Создайте файл path_list, содержащий список полных путей к файлам домашнего каталога. Сформируйте файл path_list_changed, в котором символ / заменен на символ \.
4. Выведите на экран файл path_list, убрав все гласные буквы.
5. Выведите на экран файл path_list, заменив все гласные буквы на символ *.
6. Выполните команду, аналогичную предыдущему пункту с удалением повторяющихся символов.
7. Создайте файл size_list, содержащий данные о размерах файлов домашнего каталога, отсортированных по возрастанию размера.
8. Используя совместно команды ls, tr и cut, выведите на экран данные о файлах текущей директории в виде