Операционные системы - статьи


Этюд о героях невидимого фронта - часть 6


По количеству программ дебьяновский архив превосходит даже известные коллекции программ, куда помещают все подряд без разбора. Теперь таким же образом выделим список сопроводителей, попутно еще одной текстовой утилитой cut обрежем первые 12 символов, общие для всех строк:

... $ grep "^Maintainer:" debian-packages|cut -c 13-|less

В списке много повторяющихся фамилий - это значит, что человек сопровождает несколько пакетов. Попробуем узнать, кто же из них чемпион? Сделать это нам помогут еще пара утилит: sort и uniq. Вторая из них может в отсортированном списке подсчитать количество совпадающих строк. Таким образом

... $ grep "^Maintainer:" debian-packages|cut -c 13-|sort|uniq -c|less

уже выдает нам интереснейший список. Но внимательно на него посмотрев, обнаруживаем, что у некоторых сопроводителей по нескольку e-mail адресов, так что наш список не совсем точен. Уберем эти адреса - нас интересуют только люди. Воспользуемся потоковым редактором sed - программкой, выполняющей ряд заданных команд редактирования для каждой строки.

... $ grep "^Maintainer:" debian-packages|cut -c 13-|sed 's/ *//'\ > |sort|uniq -c|less

Что-то команда стала слишком длинная. Давайте переименуем файл debian-packages в более короткое имя pks, или еще лучше - сделаем на него символическую ссылку (symbolic link):

... $ ln -s debian-packages pks

Можно было бы, конечно, сохранить промежуточный результат в файле, но мы ведь почти у цели - рейтинг-листа сопроводителей проекта Debian, подлинных героев невидимого фронта.

$ grep "^Maintainer:" pks|cut -c 13-|sed 's/ *//'|sort|uniq -c|sort -k1nr -k2f|less

Готово! Вторая команда sort выстроила список по убыванию сопровождаемых пакетов, а при одинаковом количестве - по алфавиту, игнорируя регистр букв. Приведу еще одну версию нашей однострочной программки и ее результат:

$ awk -F" <" '/^Maintainer:/{print $1}' pks|cut -c 13-|sort|uniq -c|sort -k1nr -k2f|head -n 20 87 Joey Hess 80 Herbert Xu 66 Adrian Bridgett 62 James LewisMoss 59 Adam Heath 56 Turbo Fredriksson 53 Matthias Klose 52 Takuo KITAME 51 Branden Robinson 51 Gergely Madarasz 51 Michael Alan Dorman 47 Debian QA Group 44 David Engel 41 Charles Briscoe-Smith 39 Santiago Vila 38 Andrea Fanfani 37 Torsten Landschoff 36 Josip Rodin 36 Martin Mitchell 35 Debian GCC maintainers




Начало  Назад  Вперед



Книжный магазин