Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

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

.doc
Скачиваний:
433
Добавлен:
25.02.2015
Размер:
28.16 Кб
Скачать

Лабораторная работа №2. Обработка текстовых потоков в ОС Linux

1. Создать файл errors.log, в который поместить все строки из всех доступных для чтения файлов директории /var/log/, начинающиеся с последовательности символов ACPI, без указания имени файла, в котором встретилась строка. Вывести на экран те строчки из получившегося файла, которые содержат полные имена каких-либо файлов

#!/bin/bash

grep -E -r -h "^ACPI.*" /var/log/ > errors.log

grep -E -r -h "^.*[:alnum:]\.[:alpha:]" /home/user/shvalova/lab2/errors.log

2. Создать full.log, в который вывести строки файла /var/log/Xorg.0.log, содержащие предупреждения и информационные сообщения,заменив маркеры предупреждений и информационных сообщений на слова Warning: и Information:, чтобы в получившемся файле сначала шли все ошибки, а потом все предупреждения. Вывести этот файл на экран.

#!/bin/bash

inf="\\(II\\)"

war="\\(WW\\)"

grep -E -h -s $war /var/log/Xorg.0.log | sed -E "s/$war/Warning: /" > full.log

grep -E -h -s $inf /var/log/Xorg.0.log | sed -E "s/$inf/Information: /" >> full.log

3. Создать файл emails.lst, в который вывести через запятую все адреса электронной почты, встречающиеся во всех файлах директории/etc.

#!/bin/bash

mail="[a-zA-Z0-9_.]+@[a-zA-Z0-9_]+(\\.[a-zA-Z]+)+"

grep -E -h -s -o -w $mail /etc/* | awk '{printf("%s, ",$1)}' | sed -E "s/$mail,\s$//g" > emails.lst

4. Найти в директории /bin все файлы, которые являются сценариями, и вывести на экран полное имя файла с интерпретатором, наиболее часто используемым в этих сценариях (только полное имя файла).

#!/bin/bash

p="*.bash"

grep -E -o -h -s "^#!\s*/\S+$" $p | sed -E "s/^#!\s*(\/\S+)$/\1/" | awk '{w=tolower($1); a[w]++} END {for (k in a) {print k, a[k]}}' | sort -n -r -k 2 | sed 1q | tr -d "[0-9]$"

5. Вывести список пользователей системы с указанием их UID, отсортировав по UID. Сведения о пользователей хранятся в файле /etc/passwd. В каждой строке этого файла первое поле - имя пользователя, третье поле - UID. Разделитель - двоеточие.

#!/bin/bash

awk '{ FS=":"; print $3, $1;}' /etc/passwd | sort -n -k 1

6. Подсчитать общее количество строк в файлах, находящихся в директории /var/log/ и имеющих расширение log.

#!/bin/bash

cat /var/log/*.log | wc –l

7. Вывести три наиболее часто встречающихся слова из man по команде bash длиной не менее четырех символов.

#!/bin/bash

man bash | grep -o -i "[a-zA-Z]\{4,\}" | tr "[:upper:]" "[:lower:]" | sort | uniq -c | sort -r -n | head -3

Соседние файлы в папке Лабораторная работа 2