Обьясните мне, пожалуйста этот код. Желательно - чтоб был наглядно виден алгоритм. Спасибо

программирование Linux скрипт bash shell

#!/bin/bash

echo
-e 'Top 10 most viewed URLs:\n'
# field number 7 is requested URL
cat log.txt | cut --fields=7 --delimiter=' ' | sort | uniq --count | sort --ignore-leading-blanks --general-numeric-sort --reverse | head
echo
-e '\n\n'

echo -e 'Top 10 clients requesting URLs listed above:\n'
# for each URL from TOP10 listed above...
for url in `cat log.txt | cut --fields=7 --delimiter=' ' | sort | uniq --count | sort --ignore-leading-blanks --general-numeric-sort --reverse | head | cut --bytes=9-`
do
# get User Agent field...

grep "$url" log.txt | cut --fields=12- --delimiter=' '
# and then sort it to get top 10 items
done | sort | uniq --count | sort --ignore-leading-blanks --general-numeric-sort --reverse | head
echo -e '\n\n'

echo -e 'Top 10 URLs by bytes downloaded:\n'
cat log.txt | perl -e 'my %hash;

while(<STDIN>) {
my @fields = split(" ", "$_");
# field 6 (counting from zero) contains URL, field 9 is a size
if( ("$fields[9]" ne "\"-\"") and ("$fields[9]" ne "-")) {
$hash{$fields[6]} += $fields[9]
}
};

foreach $key (keys %hash) {
print "$hash{$key} $key\n"
}' | sort --general-numeric-sort --reverse --ignore-leading-blanks | head
echo -e '\n\n'

echo -e 'Top 10 URLs which returned 404:\n'
grep '" 404' log.txt | cut --fields=7 --delimiter=' ' | sort | uniq --count | sort --ignore-leading-blanks --general-numeric-sort --reverse | head
echo -e '\n\n'

echo -e 'Top 10 referrers:\n'

cat log.txt | cut --fields=11 --delimiter=' ' | sort | uniq --count | sort --ignore-leading-blanks --general-numeric-sort --reverse | head
echo -e '\n\n'

echo -e 'Hits by days:\n'
# fields 4 and 5 is date and time of request
# Example: [01/Oct/2006:06:33:45 -0700]
cat log.txt | cut --fields=4,5 --delimiter=' ' | cut --fields=1 --delimiter=':' | sed 's/^\[//' | uniq --count
Ответы:
Я столько не выкурю ((:
алгоритм рисовать долго и утомительно. это своеобразный парсер для файла логов.
строки с началом #комментарии. если перевести их на русский и полистать маны (man) по используемым командам, то все будет ясно.
echo
-e 'Top 10 most viewed URLs:\n'  
параметр -е включает интерпритацию команд перевода строки ("enable interpretation of backslash escapes"),
ехо выводит строку в кавычках и переводит затем строку.


14 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.